Skip to content

AddingSupportForABrailleDisplay

James Teh edited this page Apr 12, 2016 · 4 revisions

Adding Support for a Braille Display

There are two options if you'd like to see an additional braille display supported by NVDA:

  1. Request that NV Access develops a driver; or
  2. Write a driver yourself.

Request that NV Access Develops a Driver

Given our extremely limited resources and other priorities, it may be months before we can consider such a request. However, we will endeavour to support additional displays if we are able.

In order for NV Access to develop a driver, we will need:

  • Access to a physical display at our offices in Queensland, Australia for at least a month at no cost to NV Access (which means we will not cover the cost of any shipping to or from Australia);
  • Technical documentation from the braille display vendor regarding how to communicate with the display;
  • Permission from the vendor to distribute the NVDA driver as open source code;
  • Any drivers, libraries, etc. from the vendor necessary to communicate with the display;
  • Permission from the vendor to freely redistribute any drivers, libraries, etc. with NVDA; and
  • Information about any key commands, etc. for the display that are common across screen raeders.

Note that if there are any significant changes to either NVDA or the display after the driver is initially developed, we may need further access to a physical display as above.

If you'd like to request that we support a display, please file an issue on GitHub including as much of the above as you can. At the very least, you should contact the braille display vendor and facilitate contact between them and us.

Write a Driver Yourself

Since NVDA is open source, we will gladly accept braille display drivers written by others. As with most of the rest of NVDA, braille display drivers are written in Python and must be licensed under the GNU General Public License version 2.

A braille display driver is a Python module containing a BrailleDisplayDriver class which inherits from the braille.BrailleDisplayDriver base class. See the code documentation for the braille.BrailleDisplayDriver class for further details.

Here are some quick tips:

  • If you want to communicate with the display via raw serial or HID, see the hwIo module. This is the preferred form of communication. The baum and brailliantB drivers are good examples.
  • If you need to use a dll to communicate with the display, you can use the Python ctypes module. However, we will generally not accept dlls larger than 300 kb for distribution with NVDA. Also, note that problems in dlls are harder to debug. The alvaBC6 and freedomScientific drivers are good examples.
  • If you need to use a COM object to communicate with the display, you can use the comtypes module. The same notes as for dlls apply. See the handyTech driver for an example.

See the Contributing to NVDA document for information about code style, etc. Once you have completed your driver, you can submit a pull request.

Clone this wiki locally