Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Object Labeler Functionality (updated feature request) #17332

Open
gerald-hartig opened this issue Oct 28, 2024 · 3 comments
Open

Object Labeler Functionality (updated feature request) #17332

gerald-hartig opened this issue Oct 28, 2024 · 3 comments
Labels
feature p4 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation.

Comments

@gerald-hartig
Copy link
Collaborator

Information transferred from old issue #2111

Is your feature request related to a problem? Please describe.

Many applications contain unlabelled or poorly labelled controls (buttons, graphics, icons, etc.) that NVDA can only announce as "button" or "unknown." This creates significant accessibility barriers:

  • Users must memorise the number of key presses to access specific controls
  • Some workplace applications become unusable without proper labelling
  • Users are forced to switch to other screen readers (like JAWS) that offer labelling capabilities
  • This issue affects various applications including:
    • Enterprise software with icon-only interfaces
    • Printer/scanner utility applications
    • Applications with custom UI controls
    • Legacy applications with poor accessibility

Describe the solution you'd like

Add a built-in object labelling system to NVDA that allows users to:

  1. Assign custom labels to controls while navigating using object navigation
  2. Save labels persistently between sessions
  3. Access labelled controls consistently within the same application
  4. Share labels with other users (optional community database)

Key requirements:

  • Activate via keyboard shortcut (e.g., NVDA+G as originally proposed)
  • Store labels in a human-readable format
  • Support application-specific labelling
  • Maintain NVDA's performance
  • Allow import/export of labels

Describe alternatives you've considered

  1. Add-on Implementation: Several add-ons have attempted to provide this functionality, but a core implementation would ensure:

    • Consistent behaviour
    • Better performance optimisation
    • Wider adoption
    • Proper maintenance
  2. Alternative Identification Methods:

    • Using object properties instead of full paths where possible
    • Class-based identification before path-based
    • Caching mechanisms to improve performance
  3. Scope Limitations:

    • Limiting labelling to specific application types
    • Excluding web content labelling (handled separately)
    • Focusing on truly inaccessible controls only

Additional context

  • Other screen readers (JAWS, TalkBack) successfully implement similar features
  • This has been a long-requested feature since 2012 (original issue Object Labeler Functionality #2111)
  • Performance concerns need to be carefully addressed:
    • Object path traversal can be expensive
    • Large numbers of labels could impact responsiveness
    • Need efficient storage and retrieval mechanisms
  • Consider modern application architectures:
    • Single executable hosting multiple applications
    • Dynamic UI generation
    • Custom control frameworks
  • Strong community demand across multiple language communities (Portuguese, Romanian, Chinese, Arabic, etc.)
  • Could potentially integrate with the NVDA Developer Info tool to help identify objects consistently
@rkingett
Copy link

Along with this, a system to clear labels would be good to keep responsiveness at it's peak.

@burmancomp
Copy link
Contributor

In addition to labelling capability, could nvda not provide somekinddof different information about different buttons etc. I suppose that if there are two unlabelled buttons in same dialog they anyway have some difference because otherwise sighted users could not know anything about their meaning. So maybe nvda could announce something more. Although it would not get information about meaning of button or other control, it could facilitate using application when you get to know their meaning. So it would not always be so necessary to label buttons or other controls in all cases. For example, if you are lazy and think that although those "labels" which nvda automatically provide are not so informative they however give me enough information so that I can perform this task so I do not label these controls.

@haruncetinkaya306
Copy link

What I'm wondering is whether the labeling done by NVDA will be local. If the labeling is in English, this could be a bit of a problem for those speaking other languages.

@seanbudd seanbudd added p4 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority feature triaged Has been triaged, issue is waiting for implementation. labels Oct 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature p4 https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priority triaged Has been triaged, issue is waiting for implementation.
Projects
None yet
Development

No branches or pull requests

5 participants