Accessability in VEX Code Pro

I have a great student that is super smart and can do 99% of his code with no aide. He is 100% blind. Does anyone know of a reader that can read the text so he can find the different chunks of code in editing? The current reader he uses only reads certain file types so doesn’t read inside the IDE.

We are transitioning from block code to text. Currently he codes the block with 3d printed blocks with brail on them and his unique blocks he uses a labeler. Then his partner takes the code and inputs it. With his fantastic keyboard skills and understanding I think we can break barriers and he can be successful in text.

10 Likes

There may be a potential VEX Code Pro CLI in the future but it’s not guaranteed. If a CLI (Command Line Interface) is made, he can use Visual Studio Code to program the robot with a speech-to-text extension.

2 Likes

PROS is a standard C++ library and can be used with VSCode. There probably are pre-existing accessibility tools for VSCode and C++?

9 Likes

hmm now this is an interesting question, one i think we also received in an email some years ago when we were still shipping PROS Editor/Atom.

the biggest issue here is that electron apps are notoriously inaccessible… or at least they have been so in the past. a cursory look at the VS Code documentation about accessibility reveals that there is in fact screen reader support:

Screen readers#

VS Code supports screen readers in the editor using a strategy based on paging the text. We have tested using the following screen readers: NVDA and JAWS on Windows, VoiceOver on macOS and Orca on Linux.

For NVDA, we recommend staying in focus mode and using the hotkeys to navigate, instead of using browse mode.

The Go to Next/Previous Error or Warning actions (F8 and ⇧F8) allow screen readers to announce the error or warning messages.

When the suggestions pop up, they will get announced to screen readers. It is possible to navigate the suggestions using Ctrl+Up and Ctrl+Down, you can dismiss the suggestions with Shift+Escape and if suggestions get in your way, you can disable the auto-popup of suggestions with the editor.quickSuggestions setting.

The Go to Next/Previous Difference actions (F7 and ⇧F7), when in a diff editor pane, will bring up the Diff Review pane, which allows the navigation of the diffs, presented in a unified patch format. Arrow Up and Arrow Down can be used to navigate through the unchanged, inserted, or deleted lines. Pressing Enter will return focus to the modified pane of the diff editor at the selected line number (or closest still existing line number in case a deleted line is selected). Use Escape or kb(Shift+Escape) to dismiss the Diff Review pane.

(and further accessibility features are documented further down that page)

I don’t think we’ve done an a11y review of our own documentation site but if you come across any issues with it please reach out and let us know—we’d be happy to fix them or find workarounds if necessary! (and of course the same goes for our VS Code extension, which is still in active development)

12 Likes

Awesome I keep everyone updated. I am excited about helping this young man reach his goals and prepare for his future.

3 Likes

It looks like I may have to convert to Pros. Is it a hard transition to make from the VEX code do you think?

In terms of functionality, vexcode and PROS are (mostly) identical. You’ll probably have an easier time making the jump from blocks to PROS than you would have going from vexcode text to PROS (where you’d have to unlearn an API to learn a new one).

I’d recommend browsing our vex clawbot tutorial for an overview of what programming a basic robot would look like.


As an aside, I did manage to find the old posts about a11y I was sure I remembered writing, if anyone’s interested:

5 Likes

It has been a while but the last time I checked, Notepad++ worked well with screen readers (at least certain ones). If you are not familiar with it, it is a text editor but with all the editing features of a standard IDE (navigation and such).

It is used quite extensively in the industry - Although I’m mostly compiling with some version of VS or other IDEs, at any given time, I can have dozens of code snips copied into Notepad++ for one reason or another.

In any case, a quick search shows it working well with JAWS.

1 Like

my one concern with recommending a pure text editor like np++ over a hybrid editor/IDE like vs code is that the latter in this case appears to have robust screen reader support for interacting both with the code and with compilation issues, but this is very good to know as well

2 Likes

+1 to the NVDA use with VSCode. I’ve used it before for a11y testing I do internally here at MSFT, so I know it’s got support for it.

This would also lead to a suggestion to using PROS in conjunction with VSCode.

3 Likes

He does use NVDA on most of his things so this should work.

1 Like

BTW, @MrsJsITclass you are an awesome robotics/programming mentor for doing all this and helping your student learn to code.

6 Likes

In looking into Pros, I haven’t tried it yet but is it a library I can import into my IDE or is it an evironment all of its own. It says here it can be used with VS when I was looking at the download it appeared to be standalone.

I would like to add it to my cloud server Replit so the team can collaborate and store their files on the cloud from any device.

1 Like

good question. PROS nominally refers to the whole environment:

  • the kernel, which is a library and API for programming vex v5 (and cortex) devices in c++
  • the command line interface (CLI) which enables project management and interaction with the vex device (flashing code, reading serial output, etc)
  • an editor component (optional), which provides an abstraction over the CLI for basic tasks (project management, building, etc). currently we are maintaining a VS Code extension for this.

I’ve never worked with repl.it (and I don’t think anyone on the PROS dev team has either—unless maybe @TheEmpire01 has?) so I’m not sure what the process is for modifying the repl.it environment is, if indeed there is any.

That said, VS Code does have Live Share (link) which allows real time collaboration in a single environment. The downside of this as compared to repl.it (as far as I understand the latter) is that you can’t easily have an always online environment to share. If your main goal with using repl.it is cloud storage, it looks like they use GitHub behind the scenes which you can use directly… there are also robust VS Code extensions for working with git at an abstract level (link).

With respect to this: yes, both are true. In the past our recommended installation process has been different for each platform, with an installer for Windows, homebrew formluae for macOS, and [various methods] for linux. recently we have been attempting to unify this process across platforms with the VS Code extension, which will automatically install all the required components in a sandboxed environment when added to VS Code.

I hope this helps, and as always feel free to ask further questions for clarification.

8 Likes