Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Native driver for Optelec ALVA 6 displays with support for raw braille input and the Optelec protocool converter #7884

Merged
merged 5 commits into from Jan 31, 2018

Conversation

LeonarddeR
Copy link
Collaborator

First of all, many thanks to @dkager for his testing and fixes.

Link to issue number:

Closes #7733.
Fixes #6731

Summary of the issue:

The current DLL based ALVA driver has the following limitations:

  • No support for raw keyboard input that allows utilizing NVDA's input gesture system and braille input framework
  • No support for the Optelec Protocol Converter that allows using older displays with this driver

Description of how this pull request fixes the issue:

This pull requests implements a new native driver for Optelec 6 series (BC640, BC680, 640 comfort and Protocol Converter). In comparison with the old driver, this changes/adds/fixes the following.

  • This driver is completely native, and native is good :) since it is thread safe and allows braille display detection in the near future (Give NVDA the ability to automatically detect braille displays. #1271)
  • When the number of cells reported by the display changes (e.g. due to setting a split point), NVDA's internal cell count is updated accordingly.
  • When the time of a device is out of sync by more than 5 seconds, the time is synchronized automatically. This comes in quite handy, as ALVA displays always tend to lose their sense of time when the battery is empty.
  • Support for raw keyboard input. When disabling HID keyboard input with the t1+spEnter gesture, this will allow a user to input braille using NVDA's own braille input system.

I've looked briefly at the BRLTTY code to support ALVA satelite displays and similar, and from the current code base, it shouldn't be that difficult to incorporate basic support for these displays. Furthermore, as we added support for the protocol converter, this driver is no longer only for the BC6 series. Therefore, we decided to rename the driver from alvaBc6 to Alva. Old BC6 driver users will be automatically moved to ALVA.

Testing performed:

Tested two ALVA BC640 devices both over USB and Bluetooth.

Known issues with pull request:

  • The protocol converter hasn't yet been tested. CC @Bamze66, @gregjozk . Also, we haven't been able to test a BC680 or 640 comfort yet.
  • Raw input is known to be non-functional on firmware 2.4.0 and older, however, NVDA will clearly state that changing HID input is not possible.

Change log entry:

  • New features
    • Added support for the Optelec protocol converter, a device that allows one to use Braille Voyager and Satelite displays using the ALVA BC6 communication protocol. (support for Optelec convertcard  #6731)
    • It is now possible to use braille input with an ALVA 640 Comfort braille display. (Native driver for Optelec braille displays #7733)
      • NVDA's braille input functionality can be used with these as well as other BC6 displays with firmware 3.0.0 and above.

How to contribute

You can download the new driver here. This link will always be up to date with the most recent source of the driver. Install by downloading the alva.py file and placing it in NVDA's brailleDisplayDrivers directory, found under %appdata\nvda or under userConfig in a portable copy.
Run NVDA and select this Braille display by opening the NVDA menu then selecting Preferences, Braille Settings, then choosing "Optelec ALVA 6 series/protocol converter". Note that the old driver is still available. If your device is not connected, make sure that you first select the "no braille" option and restart NVDA, in order to have the old driver not claim the display for itself.

…places the alvaBC6 driver. This new driver supports raw keyboard input, time synchronisation and properly updates the number of cells for split point changes.
@LeonarddeR LeonarddeR changed the title New, native driver for ALVA 6 series displays. The new alva driver re… the Optelec protocool converterNative driver for Optelec ALVA 6 displays with support for raw braille input and Jan 2, 2018
@LeonarddeR LeonarddeR changed the title the Optelec protocool converterNative driver for Optelec ALVA 6 displays with support for raw braille input and Native driver for Optelec ALVA 6 displays with support for raw braille input and the Optelec protocool converter Jan 2, 2018
Copy link
Member

@michaelDCurran michaelDCurran left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it possible to force raw input by default for models that support it? Or if not, perhaps the userGuide entry could be re-worded to be more of a warning. Users would probably expect by default that NVDA's braille input features just work. To me the userGuide reads more as if the user simply does not have to worry as its just not relevent.

@LeonarddeR
Copy link
Collaborator Author

Is it possible to force raw input by default for models that support it?

I'm very reluctant to do this, as it changes a setting inside the display without the end user knowing that. It's not just an internal toggle for the driver.

Or if not, perhaps the userGuide entry could be re-worded to be more of a warning. Users would probably expect by default that NVDA's braille input features just work. To me the userGuide reads more as if the user simply does not have to worry as its just not relevent.

That is something I can do for sure.

@@Bamze66, @gregjozk, would you be able to test this driver with the protocol converter before it lands in next?

@@ -1910,9 +1910,12 @@ Alternatively, you can connect an older Optelec display, such as a Braille Voyag
You do not need any specific drivers to be installed to use these displays.
Just plug in the display and configure NVDA to use it.

Note: NVDA might be unable to use an ALVA BC6 display over Bluetooth when it is paired using the ALVA Bluetooth utility.
When you have paired your device using this utility and NVDA is unable to detect your device, we recomment you to pair your ALVA display the regular way using the Windows Bluetooth settings.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo: recomment -> recommend

michaelDCurran added a commit that referenced this pull request Jan 23, 2018
@michaelDCurran michaelDCurran merged commit 728f82a into nvaccess:master Jan 31, 2018
@nvaccessAuto nvaccessAuto added this to the 2018.1 milestone Jan 31, 2018
@michaelDCurran
Copy link
Member

Can alvaw32.dll be removed from miscDeps now this is merged? I'm happy to do it, but just checking.

@LeonarddeR
Copy link
Collaborator Author

LeonarddeR commented Apr 20, 2018 via email

@dkager
Copy link
Collaborator

dkager commented Apr 20, 2018

There is even a PR for that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Native driver for Optelec braille displays support for Optelec convertcard
4 participants