plover icon indicating copy to clipboard operation
plover copied to clipboard

Make Plover fully navigable with keyboards

Open nvdaes opened this issue 4 years ago • 6 comments

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

Using Plover interface with a screen reader is frustrating since tab and arrow keys don't move the focus to Plover controls as expected.

Describe the solution you'd like

Commands available in the operative system (like tab, shift+tab, arrow keys and Enter, for example on Windows ) should be enough to focus and interact with Plover controls like buttons, edit boxes and others.

Describe alternatives you've considered

  • If the above solution is not possible for different operative systems, add shortcuts for different tasks, like done and explained in the Thorium Reader shortcuts article

Additional context

You may test Plover with different screen readers like NVDA on Windows, VoiceOver on Mac or Orca on Linux to get an idea about features that need to be improved.

nvdaes avatar Apr 24 '21 03:04 nvdaes

Turns out that I am already aware of this issue (mostly that when the focus got into some table, it's impossible to tab out of it), but it didn't annoy me enough to report a bug.

user202729 avatar Apr 24 '21 04:04 user202729

I use Notepad++ to edit Python and json files and this seems something general of Plover's interface, so I decided to request this as a new feature instead of reporting lots of bugs.

I used NVDA object navigation and discovered features that I didn't know, available in the toolbar. I tried to use the dialog to edit dictionaries and it's possible, but it's too slow in an proffesional environment where we may have to act very fast.

In the configuration dialog, I've never been able to edit keymappings and I have to press Escape since there are lots of keystrokes and then it's difficult to go back to the other configuration controls.

nvdaes avatar Apr 24 '21 04:04 nvdaes

Experiment: if I add tabKeyNavigation = False to the table (in this code, only the list-of-dictionaries table inside the dictionaries widget on the main window), it's possible to tab out of the table, but then you have to use up/down to navigate inside the table.

diff --git a/plover/gui_qt/dictionaries_widget.ui b/plover/gui_qt/dictionaries_widget.ui
index bdb83e9..c85e615 100644
--- a/plover/gui_qt/dictionaries_widget.ui
+++ b/plover/gui_qt/dictionaries_widget.ui
@@ -37,6 +37,9 @@
      <property name="frameShape">
       <enum>QFrame::Box</enum>
      </property>
+     <property name="tabKeyNavigation">
+      <bool>false</bool>
+     </property>
      <property name="showDropIndicator" stdset="0">
       <bool>true</bool>
      </property>

user202729 avatar Apr 24 '21 04:04 user202729

The above code maybe a solution. A friend, also user of JAWS and NVDA, feels frustrated since Plover reads the full path of dictionaries and this maybe anoying when we add files not contained in assets. She would like a feature to optionally deactivate this verbosity since listening the full path is slow. She requests me to develop an NVDA add-on for Plover if this can't be addressed as an option in the program.

nvdaes avatar Apr 24 '21 04:04 nvdaes

Plover reads the full path of dictionaries

#1162 .

user202729 avatar Apr 24 '21 05:04 user202729

Test: #1293 (Disable tabKeyNavigation for all tables) -- distribution packages can be downloaded as artifacts.

I think that this covers all the tables in the code. There's still one in the plugin manager, but that part is in a different repo.


Note: while trying to use Plover with the keyboard some more (I don't frequently have to modify the key map anyway) I notice that if I press up/down to select a cell in the keymap table, the outer window does not scroll. (this may not be easy to fix. The idea is probably outer.verticalScrollBar().setValue() with table.visualRect(current) and table.geometry() on table.currentChanged(current, [previous]) events fired)


By the way, most components on the main interface already have a shortcut (both Qwerty and steno (assignable))

user202729 avatar Apr 24 '21 06:04 user202729