ghidra icon indicating copy to clipboard operation
ghidra copied to clipboard

All tables trap keyboard focus with the tab key.

Open trypsynth opened this issue 1 year ago • 3 comments

Describe the bug When navigating around Ghidra with a screen reader, any table, whether that be the table view in the main window, the analyzers window, or even in the function editor, completely traps the tab key. Once you tab onto one you can't tab off of it, and tab also moves between the elements of the table, which is quite unusual. To Reproduce Steps to reproduce the behavior:

  1. Start NVDA.
  2. Open Ghidra, and load an executable.
  3. Find it in the tree view, and click on it.
  4. When asked to analyze, click yes.
  5. Attempt to tab around the analyzers window when it comes up.

Expected behavior The table should take up only one element in the tab order. The arrow keys should still move through it like they currently do, but it should only take up one element in the tab order, and let me tab away from it onto other elements. The way it currently is makes it impossible to change any options, or click the analyze button. Environment (please complete the following information):

  • OS: Windows 10
  • Java Version: 21
  • Ghidra Version: 10.4-20230928
  • Ghidra Origin: The scoop package manager.

trypsynth avatar Jan 27 '24 14:01 trypsynth

Try using <CTRL> TAB. The java focus traversal system specifies that both TAB and <CTRL> Tab are used to move forward through the component focus cycle. However, several components use the TAB key for internal uses, the obvious one being text widgets where TAB literally inserts a tab, so it can't be used for focus traversal. Java Tables use TAB to move between cells. Because of this, Java defines the <CTRL> TAB key to be the alternative when TAB isn't available.

We do have some issues with focus cycles that I'm working on right now. We are planning to make <CTRL> TAB work universally, but are reluctant to interfere with Java's intended use of TABs in some of its components.

ghidragon avatar Jan 29 '24 17:01 ghidragon

Sometimes you need to use Ctrl+Tab (or Ctrl+Shift+Tab) to proceed to the next (or previous) panel. E.g. when moving out of the DecompilePanel, or getting out of a nested table object (like that within the Storage Locations component of the Storage Address Editor).

Wall-AF avatar Jan 29 '24 22:01 Wall-AF

Control+tab works, thanks! Although I would personally advocate for this being changed. Any trapping of the tab key is incredibly confusing and frustrating as a screen reader user, even myself as a fairly advanced user. I think this should apply to edit controls, too.

trypsynth avatar Feb 01 '24 21:02 trypsynth