An Overview of NVDA Remote Access, a Free Add-on for the Non Visual Desktop Access Screen Reader
Originally published on: AFB AccessWorld Magazine
Until recently, one aspect that commercial screen readers such as JAWS and Window Eyes have had over Non Visual Desktop Access (NVDA) is the built-in ability for a user to seamlessly take control of another computer remotely if the other computer is running the same screen reader. In March of 2015, the programmers Christopher Toth and Tyler Spivey created a crowdfunding campaign to develop an add-on for NVDA to allow for this same remote access. The campaign was successful and the NVDA Remote Access add-on was released in the early summer of 2015. The add-on is both open source and free to download and use. For this article, I will walk through using the add-on and also describe my experience using the add-on.
The Remote Access add-on can be downloaded from NVDA add-on collections such as the NVDA Community Add-on site and can also be downloaded from the NVDA Remote website. To install the add-on, activate the downloaded file and NVDA will ask you if you wish to install the add-on. After you press “Yes” the add-on will be installed and NVDA will ask you if you wish to restart to complete installation. Once NVDA has restarted, the add-on will be installed and ready for use.
The Remote Access add-on has documentation in HTML format. The documentation is posted on the NVDA Remote website. The documentation can also be found by going into the Tools menu, activating the Add-ons Manager, and highlighting the Remote add-on. You will find that there is a Help button in this dialog which launches the HTML help file. The document is very straightforward and concise with clear instructions on the various aspects of the add-on. For each aspect of the add-on, step-by-step instructions are provided; information regarding some anomalies that may be encountered is also included.
Connecting to Another Computer Using a Server
The Remote Access add-on has a submenu in the NVDA menu located under Tools > Remote. The first option in this menu is Connect, and will be the main dialog that you work with when establishing connections. There are two sets of radio buttons in this dialog; one allows you to choose if the computer will be a server or client and the other allows you to choose if the computer will be the controlling computer or the one controlled. When connecting through a server, you will choose the “Client” radio button on both computers. In the next set of radio buttons one computer needs to be set as the controller and the other as the controlled. After these radio buttons there are two fields, one for Host and one for the key. In the host field, you place the name of your relay server. If you do not have access to a personal server, you can use nvdaremote.com as a server. In the key field, you can either type your own key or activate the following Generate Key button to have a 7-digit key generated for you. This key will need to be used on the other computer as well to form the connection. Once these fields have been filled out, you can press the OK button to connect to the server. Now the initial computer is ready to be connected to. The other computer follows the same steps but selects the opposite role from the original computer. The second computer will also need to input the key from the first computer into the key field so that they can be connected. When connecting you will hear a different sound depending on if you have connected as the controlling computer (an ascending two-tone sound) or as the controlled computer (three-tone sound). When the connection between the computers has been established you will hear a higher single tone which will play from both computers at once.
Connecting Directly to Another Computer
The process for forming a direct connection is similar to using a relay server with a few differences on the end of the person who will set their computer as the server for the connection. This computer can either be the controlling or controlled computer but must be first to establish a connection. Instead of selecting the Client button in the first group of radio buttons, you select Server to begin a direct connection. After selecting if the server will be controlling or controlled you will come to a button to generate your external IP. This tool allows you to conveniently find the IP address that the other computer will need to enter into their Host field to connect to you. The IP address will be placed in the field when generated. To be the server, you must have port 6837 forwarded. When you select the Get External IP button, your IP will be copied to the field and if your port is not forwarded you will be alerted. If you are presented with a message that the port is forwarded but the add-on could not acquire your IP, you can proceed as described here, but find your external IP another way. This field does not need to be filled in and is meant as a quick way of finding your IP. After the IP field you have the key field and the Generate button just as you would if you were connecting as a client. Once you have entered or generated the key and opened the connection, the other computer can connect to you using the client radio button substituting your external IP for the relay server in the Host field.
Controlling Another Computer
Once you are connected to a computer you can press the F11 key to send the keys you press to the other computer. When you are controlling the other computer, NVDA will speak anything that the NVDA on the other computer is saying. If you want to start using your computer normally, pressing the F11 key will stop sending keys and allow you to operate your machine normally. When you press F11, NVDA will tell you if you are either sending or not sending keys. Operating the other machine is seamless: there is barely any lag at all in its operation and switching between machines is fast and intuitive.
It is important to note that the controlled computer’s screen is not mirrored on the screen. Only the NVDA speech is sent along with any NVDA sounds such as the sounds for entering Browse mode and Focus mode. If you do not need non-NVDA audio, controlling a computer through Remote access is efficient. I wrote this article by controlling another computer and writing it there and I was able to do so just as easily as if I were using the computer directly.
Other Menu Options
There are several other options in the Remote menu. These will be discussed in the following sections in order of their appearance. As the Connect item has been discussed previously, it will be skipped.
This option (the second option in the Remote menu) disconnects the computer. You can disconnect either the controlling computer or controlled computer with this option. You will hear a low tone to alert you that the connection has been broken. As long as the other machine remains connected the other computer can reconnect as usual.
Mute Remote Speech
This command allows you to mute the speaking of the controlled computer on the controlling computer. It is only available on the controlling computer and is disabled on the controlled computer. Note that you will still hear sounds such as the Browse mode and Focus mode sounds even with speech muted.
This command allows you to send the contents of the clipboard to the other computer. This can be done from either machine, allowing you to push contents from your controlling computer or send back clipboard contents from the controlled computer.
This opens the options dialog. At the moment, the only option is to auto-connect to the server on startup. If you check the checkbox fields for Host and Key, they will be added to the dialog. Using this option will set the machine as the controlled computer by default and you must provide your own key instead of generating one. If you complete this process, NVDA will automatically connect to the server with the provided details every time it runs allowing you to always have access to the controlled computer without the need to set up a connection each time.
Send Ctrl + Alt + Del
You cannot use the Ctrl + Alt + Del combination when sending keys. This menu option (which was not working at the time of testing) allows you to send the Ctrl + Alt + Del command to the controlled computer.
Bugs and Reporting Issues
There were two bugs that I found during testing. If you perform a Ctrl + Alt + Del command while sending keys to the controlled machine, the Ctrl and Alt keys will become stuck, so that when you send keys afterward they will be interpreted as if you were pressing Ctrl + Alt along with the pressed keys. If you press Ctrl + Alt while sending keys they return to normal. The other bug experienced is the aforementioned bug with the Send Ctrl + Alt + Del menu option. If you experience bugs, the developers have set up a bug tracking system where you can report them. This tracker has also been linked on the NVDA Remote homepage.
The Bottom Line
The NVDA Remote Access add-on was very simple to set up and use and the experience of controlling another computer was smooth. There are many possible uses for this add-on and its inclusion in the pool of available NVDA add-ons could significantly increase the usefulness of NVDA for many users.
Product: NVDA Remote Access
Developers: Christopher Toth and Tyler Spivey