Object Navigation

What are Objects?

Objects are individual elements of information. They are organised by the operating system into a hierarchical structure that works in a similar way to tree views (like in Windows Explorer or My Computer).

Examples of these include:

  • Buttons
  • Menu items and desktop icons
  • Portions of text (in word editors, dialogue boxes or web sites etc)
  • Form/edit fields, or tables
  • Title bars, menu bars and the task bar
  • The system tray; and
  • The desktop

Some objects, like a menu bar, can be made up of lots of different objects. In technical terms, the menu bar object would be referred to as the parent object and the menus within it would be referred to as its children (child objects). Objects that are on the same level within the hierarchy are referred to as the next or previous object.

What is Object Navigation?

Object navigation is the main method of navigation used in NVDA. It allows users to navigate between objects without moving the current focus until the user chooses to. Users are able to move through the object hierarchy between parent and child objects, and also between next and previous objects.

If you are unfamiliar with the idea of object navigation - and you are use to the more traditional flat method of navigation - you may find the below example helpful.

A Practical Example

This example uses the hardware of a mobile phone to describe the process of object navigation and how it works.

Think of the different hardware components of a mobile phone. These include:

  • Shell
  • Keypad
  • Number buttons
  • Function buttons
  • Camera
  • Screen

(For this example, only these listed components will be used)

Think of each of these components as objects. They can be structured into a hierarchy where several individual objects comprise another object. For example, the shell would be comprised of all of the listed objects, and as it is the outer-most object, it is refered to as the root object. Any objects under this object would be considered its child objects. In this example, the root object will have three children and they are: the screen, the camera and the keypad. The first two objects (the screen and the camera) do not have anymore children, but the keypad has two and they are the function buttons and the number buttons. This hierarchy is represented in a numbered list below:

  • 1. The Shell (root object)
    • 1.1. The Screen
    • 1.2. The Camera
    • 1.3. The Keypad
      • 1.3.1. The Function Buttons
      • 1.3.2. The Number Buttons

The hierarchy that is used to structure objects inside operating systems can be perceived in exactly the same way.

Useful Object Navigation Features in NVDA

Below are outlines of several useful features of NVDA's object navigation. For a list of key commands, please see the next section.

  • When you use NVDA's object navigation, it does not take the focus away from your current activity. It can be a useful tool for looking up information in an open document while working with another application, without having to switch between them.
  • You are able to activate the object with NVDA+numpad enter, even if your focus is somewhere else.
  • You are able to check the location and size of the object on the screen with NVDA+shift+numpad 5.

NVDA Object Navigation Key Commands

  • NVDA+numpad 5: report the current object
  • NVDA+Shift+numpad 5: report the object location and its size on screen
  • NVDA+numpad 8: move to the parent object
  • NVDA+numpad 2: move to the first child object
  • NVDA+numpad 4: move to the previous object
  • NVDA+numpad 6: move to the next object
  • NVDA+numpad enter: activate the current object
  • NVDA+numpad minus: move to the object with focus

What are the Downsides to Object Navigation?

Object navigation can only report the names and states of individual objects if they have been appropriately assigned. The names of some menu items cannot be accessed through object navigation because the programmers who wrote them did not assign that object with the appropriate name. In order for NVDA to access objects that have not been appropriately assigned, it will need to use display hooks (this feature is not currently available ).

Why Does NVDA use Object Navigation?

At this point in time, it is the most effective way for NVDA to access information from the operating system without the use of display hooks. It is also the preferred method of navigation for some Linux screen readers and was also used in Virgo 4 (a Windows screen reader that is no longer being updated).