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 Freedom Scientific braille displays #7727

Closed
bramd opened this issue Nov 4, 2017 · 36 comments · Fixed by #8853
Closed

Native driver for Freedom Scientific braille displays #7727

bramd opened this issue Nov 4, 2017 · 36 comments · Fixed by #8853

Comments

@bramd
Copy link
Contributor

bramd commented Nov 4, 2017

The current driver for Freedom Scientific braille displays uses a DLL from FS to communicate with the displays. To benefit from upcoming improvements to NVDA's braille support such as autodetection (see #1271), a native implementation of this driver is prefered.

I started work on such a driver in the branch at https://github.com/bramd/nvda/tree/freedomscientific-native.

@bramd
Copy link
Contributor Author

bramd commented Nov 6, 2017

An early try build is here: https://ci.appveyor.com/project/NVAccess/nvda/build/try-freedomscientific-native-14592%2c331e13db/artifacts

This has had some testing with a Focus 40 blue. If you have a FS display, please test this build. I'm especially interested in

  1. Larger displays such as the Focus 80, I expect some issues there
  2. The first generation Focus displays (Focus 44/70/84), these displays have a non-standard coding for cells sent to the display

@LeonarddeR
Copy link
Collaborator

CC @xtstoll, @DGartmann: You both are users who either reported issues related to the Focus displays in the past, or have an open issue. Would you be able to test this try build and provide your feedback?

@DGartmann
Copy link

@LeonarddeR: How are we supposed to test this build? Is it an installable version that should replace the current "Next" build?

@LeonarddeR
Copy link
Collaborator

@DGartmann: You can install this build, but I'd advise to run this build either as a portable copy, or just run the build from the executable file without installing. There shouldn't be incompatibilities with configuration in case of the native driver.

@lukaszgo1
Copy link
Contributor

Hi,
i’ve tried this try build with Focus 40 Blue New connected via USB to machine running Windows 10 build 14393 unfortunately it gives an error. I’m attaching the log.
focus-try-build-NVDA.log.txt

@bramd
Copy link
Contributor Author

bramd commented Nov 8, 2017

@lukaszgo1
Copy link
Contributor

@bramd This build is working correctly. Thanks for fixing.

@derekriemer
Copy link
Collaborator

I need to test this

@bramd
Copy link
Contributor Author

bramd commented Nov 9, 2017

@derekriemer Which model do you have?

@xtstoll
Copy link

xtstoll commented Nov 9, 2017

@bramd I tested with a Focus 40 Blue using this build (nvda_snapshot_try-freedomscientific-native-14603,22490378.exe) on a pen drive, and the modifier keys still didn't work for me.

I did my repro from bug ticket here: #7706

Do I need to install anything else before trying again?

@LeonarddeR
Copy link
Collaborator

@xtstoll: This behaviour is not covered by this new driver. The intended behaviour should be implemented in NVDA core itself in order for other displays to benefit from it as well/

@derekriemer
Copy link
Collaborator

I'm on a focus 40. typing anything at all renders only one dot, but only if I release all the keys at the same time.

  1. Press ⠇ but keep the keys held down.
  2. release them all at the same time. ⠁ or ⠄ or ⠆ or ⠃ or ⠂ or ⠇ may be entered.
  3. now, type ⠇ and hold them down. release ⠁ while holding down ⠆ still. ⠇ is entered now.

Here's a log.
Typing ⠇⠇⠇⠇⠇⠇⠇⠇⠇
result:
⠆⠆⠆⠄⠄⠄⠆⠅⠄
Log:
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:58:57.760):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:58:58.259):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:58:58.760):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:58:59.267):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:58:59.762):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:00.273):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:00.770):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:01.266):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:01.763):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:02.259):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:02.765):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:03.266):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:03.683):
Got packet of type '\x03' with args: '\x07' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:03.765):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:03.782):
Got packet of type '\x03' with args: '\x04' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (11:59:03.782):
Input: br(freedomScientific):dot2+dot3
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:03.796):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (11:59:03.846):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
IO - braille.BrailleBuffer.update (11:59:03.910):
Braille regions text: [u'\u2806 ']
IO - braille.BrailleHandler.update (11:59:03.910):
Braille window dots: 23 -
IO - braille.BrailleHandler.update (11:59:03.911):
Braille window dots: 23 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:03.911):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:03.913):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (11:59:03.977):
Braille regions text: [u'\u2806 ']
IO - braille.BrailleHandler.update (11:59:03.977):
Braille window dots: 23 -
IO - braille.BrailleHandler.update (11:59:03.977):
Braille window dots: 23 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:03.979):
Got packet of type '\x03' with args: '\x07' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:03.979):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:03.980):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (11:59:03.990):
Braille regions text: [u'\u2806 ']
IO - braille.BrailleHandler.update (11:59:03.990):
Braille window dots: 23 -
IO - braille.BrailleHandler.update (11:59:03.990):
Braille window dots: 23 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:03.992):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:03.993):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:04.098):
Got packet of type '\x03' with args: '\x04' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (11:59:04.098):
Input: br(freedomScientific):dot2+dot3
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:04.108):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (11:59:04.154):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
IO - braille.BrailleBuffer.update (11:59:04.230):
Braille regions text: [u'\u2806\u2806 ']
IO - braille.BrailleHandler.update (11:59:04.230):
Braille window dots: 23 23 -
IO - braille.BrailleHandler.update (11:59:04.230):
Braille window dots: 23 23 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:04.230):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:04.233):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:04.275):
Got packet of type '\x03' with args: '\x07' '\x00' '\x00'
IO - braille.BrailleBuffer.update (11:59:04.288):
Braille regions text: [u'\u2806\u2806 ']
IO - braille.BrailleHandler.update (11:59:04.288):
Braille window dots: 23 23 -
IO - braille.BrailleHandler.update (11:59:04.288):
Braille window dots: 23 23 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:04.289):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:04.289):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (11:59:04.299):
Braille regions text: [u'\u2806\u2806 ']
IO - braille.BrailleHandler.update (11:59:04.299):
Braille window dots: 23 23 -
IO - braille.BrailleHandler.update (11:59:04.299):
Braille window dots: 23 23 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:04.301):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:04.302):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:04.378):
Got packet of type '\x03' with args: '\x04' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (11:59:04.378):
Input: br(freedomScientific):dot2+dot3
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:04.390):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (11:59:04.436):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
IO - braille.BrailleBuffer.update (11:59:04.555):
Braille regions text: [u'\u2806\u2806\u2806 ']
IO - braille.BrailleHandler.update (11:59:04.555):
Braille window dots: 23 23 23 -
IO - braille.BrailleHandler.update (11:59:04.556):
Braille window dots: 23 23 23 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:04.558):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:04.559):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (11:59:04.568):
Braille regions text: [u'\u2806\u2806\u2806 ']
IO - braille.BrailleHandler.update (11:59:04.568):
Braille window dots: 23 23 23 -
IO - braille.BrailleHandler.update (11:59:04.569):
Braille window dots: 23 23 23 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:04.569):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:04.571):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (11:59:04.579):
Braille regions text: [u'\u2806\u2806\u2806 ']
IO - braille.BrailleHandler.update (11:59:04.579):
Braille window dots: 23 23 23 -
IO - braille.BrailleHandler.update (11:59:04.581):
Braille window dots: 23 23 23 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:04.582):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:04.582):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:04.956):
Got packet of type '\x03' with args: '\x07' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:05.082):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:05.095):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (11:59:05.095):
Input: br(freedomScientific):dot3
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (11:59:05.155):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
IO - braille.BrailleBuffer.update (11:59:05.230):
Braille regions text: [u'\u2806\u2806\u2806\u2804 ']
IO - braille.BrailleHandler.update (11:59:05.230):
Braille window dots: 23 23 23 3 -
IO - braille.BrailleHandler.update (11:59:05.230):
Braille window dots: 23 23 23 3 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:05.232):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:05.233):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (11:59:05.289):
Braille regions text: [u'\u2806\u2806\u2806\u2804 ']
IO - braille.BrailleHandler.update (11:59:05.289):
Braille window dots: 23 23 23 3 -
IO - braille.BrailleHandler.update (11:59:05.290):
Braille window dots: 23 23 23 3 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:05.292):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:05.292):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (11:59:05.302):
Braille regions text: [u'\u2806\u2806\u2806\u2804 ']
IO - braille.BrailleHandler.update (11:59:05.302):
Braille window dots: 23 23 23 3 -
IO - braille.BrailleHandler.update (11:59:05.302):
Braille window dots: 23 23 23 3 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:05.303):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:05.305):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:05.568):
Got packet of type '\x03' with args: '\x07' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:05.700):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (11:59:05.701):
Input: br(freedomScientific):dot3
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (11:59:05.785):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
IO - braille.BrailleBuffer.update (11:59:05.836):
Braille regions text: [u'\u2806\u2806\u2806\u2804\u2804 ']
IO - braille.BrailleHandler.update (11:59:05.836):
Braille window dots: 23 23 23 3 3 -
IO - braille.BrailleHandler.update (11:59:05.836):
Braille window dots: 23 23 23 3 3 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:05.838):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:05.838):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (11:59:05.898):
Braille regions text: [u'\u2806\u2806\u2806\u2804\u2804 ']
IO - braille.BrailleHandler.update (11:59:05.898):
Braille window dots: 23 23 23 3 3 -
IO - braille.BrailleHandler.update (11:59:05.898):
Braille window dots: 23 23 23 3 3 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:05.898):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:05.900):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (11:59:05.907):
Braille regions text: [u'\u2806\u2806\u2806\u2804\u2804 ']
IO - braille.BrailleHandler.update (11:59:05.908):
Braille window dots: 23 23 23 3 3 -
IO - braille.BrailleHandler.update (11:59:05.908):
Braille window dots: 23 23 23 3 3 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:05.910):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:05.911):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:06.121):
Got packet of type '\x03' with args: '\x07' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:06.249):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (11:59:06.249):
Input: br(freedomScientific):dot3
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (11:59:06.335):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
IO - braille.BrailleBuffer.update (11:59:06.403):
Braille regions text: [u'\u2806\u2806\u2806\u2804\u2804\u2804 ']
IO - braille.BrailleHandler.update (11:59:06.404):
Braille window dots: 23 23 23 3 3 3 -
IO - braille.BrailleHandler.update (11:59:06.404):
Braille window dots: 23 23 23 3 3 3 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:06.404):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:06.407):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (11:59:06.482):
Braille regions text: [u'\u2806\u2806\u2806\u2804\u2804\u2804 ']
IO - braille.BrailleHandler.update (11:59:06.482):
Braille window dots: 23 23 23 3 3 3 -
IO - braille.BrailleHandler.update (11:59:06.482):
Braille window dots: 23 23 23 3 3 3 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:06.483):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:06.483):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (11:59:06.494):
Braille regions text: [u'\u2806\u2806\u2806\u2804\u2804\u2804 ']
IO - braille.BrailleHandler.update (11:59:06.494):
Braille window dots: 23 23 23 3 3 3 -
IO - braille.BrailleHandler.update (11:59:06.496):
Braille window dots: 23 23 23 3 3 3 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:06.496):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:06.497):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:06.700):
Got packet of type '\x03' with args: '\x05' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:06.710):
Got packet of type '\x03' with args: '\x07' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:06.848):
Got packet of type '\x03' with args: '\x04' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (11:59:06.848):
Input: br(freedomScientific):dot2+dot3
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:06.868):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (11:59:06.907):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
IO - braille.BrailleBuffer.update (11:59:06.970):
Braille regions text: [u'\u2806\u2806\u2806\u2804\u2804\u2804\u2806 ']
IO - braille.BrailleHandler.update (11:59:06.971):
Braille window dots: 23 23 23 3 3 3 23 -
IO - braille.BrailleHandler.update (11:59:06.971):
Braille window dots: 23 23 23 3 3 3 23 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:06.973):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:06.973):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (11:59:07.030):
Braille regions text: [u'\u2806\u2806\u2806\u2804\u2804\u2804\u2806 ']
IO - braille.BrailleHandler.update (11:59:07.032):
Braille window dots: 23 23 23 3 3 3 23 -
IO - braille.BrailleHandler.update (11:59:07.032):
Braille window dots: 23 23 23 3 3 3 23 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:07.032):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:07.033):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (11:59:07.042):
Braille regions text: [u'\u2806\u2806\u2806\u2804\u2804\u2804\u2806 ']
IO - braille.BrailleHandler.update (11:59:07.042):
Braille window dots: 23 23 23 3 3 3 23 -
IO - braille.BrailleHandler.update (11:59:07.042):
Braille window dots: 23 23 23 3 3 3 23 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:07.043):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:07.045):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:07.362):
Got packet of type '\x03' with args: '\x07' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:07.503):
Got packet of type '\x03' with args: '\x01' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (11:59:07.503):
Input: br(freedomScientific):dot1+dot3
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:07.513):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (11:59:07.563):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
IO - braille.BrailleBuffer.update (11:59:07.700):
Braille regions text: [u'\u2806\u2806\u2806\u2804\u2804\u2804\u2806\u2805 ']
IO - braille.BrailleHandler.update (11:59:07.700):
Braille window dots: 23 23 23 3 3 3 23 13 -
IO - braille.BrailleHandler.update (11:59:07.701):
Braille window dots: 23 23 23 3 3 3 23 13 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:07.701):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:07.703):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (11:59:07.717):
Braille regions text: [u'\u2806\u2806\u2806\u2804\u2804\u2804\u2806\u2805 ']
IO - braille.BrailleHandler.update (11:59:07.717):
Braille window dots: 23 23 23 3 3 3 23 13 -
IO - braille.BrailleHandler.update (11:59:07.717):
Braille window dots: 23 23 23 3 3 3 23 13 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:07.719):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:07.720):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (11:59:07.733):
Braille regions text: [u'\u2806\u2806\u2806\u2804\u2804\u2804\u2806\u2805 ']
IO - braille.BrailleHandler.update (11:59:07.733):
Braille window dots: 23 23 23 3 3 3 23 13 -
IO - braille.BrailleHandler.update (11:59:07.733):
Braille window dots: 23 23 23 3 3 3 23 13 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:07.734):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:07.736):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:08.085):
Got packet of type '\x03' with args: '\x06' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:08.096):
Got packet of type '\x03' with args: '\x07' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:08.240):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:08.243):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (11:59:08.243):
Input: br(freedomScientific):dot3
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (11:59:08.338):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
IO - braille.BrailleBuffer.update (11:59:08.394):
Braille regions text: [u'\u2806\u2806\u2806\u2804\u2804\u2804\u2806\u2805\u2804 ']
IO - braille.BrailleHandler.update (11:59:08.394):
Braille window dots: 23 23 23 3 3 3 23 13 3 -
IO - braille.BrailleHandler.update (11:59:08.395):
Braille window dots: 23 23 23 3 3 3 23 13 3 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:08.397):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:08.398):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (11:59:08.454):
Braille regions text: [u'\u2806\u2806\u2806\u2804\u2804\u2804\u2806\u2805\u2804 ']
IO - braille.BrailleHandler.update (11:59:08.454):
Braille window dots: 23 23 23 3 3 3 23 13 3 -
IO - braille.BrailleHandler.update (11:59:08.456):
Braille window dots: 23 23 23 3 3 3 23 13 3 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:08.457):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:08.457):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (11:59:08.466):
Braille regions text: [u'\u2806\u2806\u2806\u2804\u2804\u2804\u2806\u2805\u2804 ']
IO - braille.BrailleHandler.update (11:59:08.467):
Braille window dots: 23 23 23 3 3 3 23 13 3 -
IO - braille.BrailleHandler.update (11:59:08.467):
Braille window dots: 23 23 23 3 3 3 23 13 3 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:08.467):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:08.469):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:08.986):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:09.480):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:09.976):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:10.490):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:10.984):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:11.482):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:11.989):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'

Now typing ⠇⠇⠇⠇⠇⠇⠇⠇⠇ but releasing a key first.
⠇⠇⠇⠇⠇⠇⠇⠇⠇
Log:
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:29.151):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:29.650):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:30.150):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:30.661):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:31.158):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:31.655):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:31.858):
Got packet of type '\x03' with args: '\x01' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:32.151):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:32.371):
Got packet of type '\x03' with args: '\x07' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:32.651):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:33.163):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:33.269):
Got packet of type '\x03' with args: '\x05' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (12:00:33.270):
Input: br(freedomScientific):dot1+dot2+dot3
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:00:33.358):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
IO - braille.BrailleBuffer.update (12:00:33.374):
Braille regions text: [u'\u2807 ']
IO - braille.BrailleHandler.update (12:00:33.375):
Braille window dots: 123 -
IO - braille.BrailleHandler.update (12:00:33.375):
Braille window dots: 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:33.375):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:33.378):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (12:00:33.390):
Braille regions text: [u'\u2807 ']
IO - braille.BrailleHandler.update (12:00:33.390):
Braille window dots: 123 -
IO - braille.BrailleHandler.update (12:00:33.391):
Braille window dots: 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:33.391):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:33.392):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (12:00:33.448):
Braille regions text: [u'\u2807 ']
IO - braille.BrailleHandler.update (12:00:33.448):
Braille window dots: 123 -
IO - braille.BrailleHandler.update (12:00:33.448):
Braille window dots: 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:33.450):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:33.451):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:33.849):
Got packet of type '\x03' with args: '\x01' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:33.858):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:33.944):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:34.263):
Got packet of type '\x03' with args: '\x07' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:34.457):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:34.954):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:35.036):
Got packet of type '\x03' with args: '\x06' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (12:00:35.036):
Input: br(freedomScientific):dot1+dot2+dot3
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:00:35.115):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
IO - braille.BrailleBuffer.update (12:00:35.171):
Braille regions text: [u'\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:35.171):
Braille window dots: 123 123 -
IO - braille.BrailleHandler.update (12:00:35.173):
Braille window dots: 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:35.174):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:35.174):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (12:00:35.232):
Braille regions text: [u'\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:35.232):
Braille window dots: 123 123 -
IO - braille.BrailleHandler.update (12:00:35.232):
Braille window dots: 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:35.233):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:35.233):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (12:00:35.243):
Braille regions text: [u'\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:35.243):
Braille window dots: 123 123 -
IO - braille.BrailleHandler.update (12:00:35.243):
Braille window dots: 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:35.246):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:35.246):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:35.497):
Got packet of type '\x03' with args: '\x04' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:35.516):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:35.749):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:35.872):
Got packet of type '\x03' with args: '\x06' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:35.884):
Got packet of type '\x03' with args: '\x07' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:36.252):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:36.650):
Got packet of type '\x03' with args: '\x03' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (12:00:36.651):
Input: br(freedomScientific):dot1+dot2+dot3
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:00:36.717):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
IO - braille.BrailleBuffer.update (12:00:36.789):
Braille regions text: [u'\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:36.789):
Braille window dots: 123 123 123 -
IO - braille.BrailleHandler.update (12:00:36.790):
Braille window dots: 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:36.790):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:36.792):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (12:00:36.851):
Braille regions text: [u'\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:36.851):
Braille window dots: 123 123 123 -
IO - braille.BrailleHandler.update (12:00:36.851):
Braille window dots: 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:36.852):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:36.854):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (12:00:36.864):
Braille regions text: [u'\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:36.864):
Braille window dots: 123 123 123 -
IO - braille.BrailleHandler.update (12:00:36.865):
Braille window dots: 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:36.865):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:36.865):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:37.101):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:37.351):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:37.556):
Got packet of type '\x03' with args: '\x07' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:37.854):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:38.349):
Got packet of type '\x03' with args: '\x05' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (12:00:38.351):
Input: br(freedomScientific):dot1+dot2+dot3
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:38.352):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:00:38.421):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
IO - braille.BrailleBuffer.update (12:00:38.496):
Braille regions text: [u'\u2807\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:38.496):
Braille window dots: 123 123 123 123 -
IO - braille.BrailleHandler.update (12:00:38.497):
Braille window dots: 123 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:38.499):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:38.500):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (12:00:38.562):
Braille regions text: [u'\u2807\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:38.562):
Braille window dots: 123 123 123 123 -
IO - braille.BrailleHandler.update (12:00:38.562):
Braille window dots: 123 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:38.562):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:38.565):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (12:00:38.575):
Braille regions text: [u'\u2807\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:38.575):
Braille window dots: 123 123 123 123 -
IO - braille.BrailleHandler.update (12:00:38.575):
Braille window dots: 123 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:38.575):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:38.576):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:38.760):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:39.084):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:39.160):
Got packet of type '\x03' with args: '\x04' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:39.171):
Got packet of type '\x03' with args: '\x07' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:39.595):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:39.927):
Got packet of type '\x03' with args: '\x06' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (12:00:39.928):
Input: br(freedomScientific):dot1+dot2+dot3
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:00:40.003):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
IO - braille.BrailleBuffer.update (12:00:40.075):
Braille regions text: [u'\u2807\u2807\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:40.075):
Braille window dots: 123 123 123 123 123 -
IO - braille.BrailleHandler.update (12:00:40.076):
Braille window dots: 123 123 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:40.076):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:40.078):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (12:00:40.137):
Braille regions text: [u'\u2807\u2807\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:40.137):
Braille window dots: 123 123 123 123 123 -
IO - braille.BrailleHandler.update (12:00:40.138):
Braille window dots: 123 123 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:40.138):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:40.138):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (12:00:40.148):
Braille regions text: [u'\u2807\u2807\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:40.148):
Braille window dots: 123 123 123 123 123 -
IO - braille.BrailleHandler.update (12:00:40.148):
Braille window dots: 123 123 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:40.150):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:40.151):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:40.394):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:40.654):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:40.819):
Got packet of type '\x03' with args: '\x06' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:40.831):
Got packet of type '\x03' with args: '\x07' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:41.157):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:41.654):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:41.658):
Got packet of type '\x03' with args: '\x03' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (12:00:41.660):
Input: br(freedomScientific):dot1+dot2+dot3
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:00:41.716):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
IO - braille.BrailleBuffer.update (12:00:41.845):
Braille regions text: [u'\u2807\u2807\u2807\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:41.845):
Braille window dots: 123 123 123 123 123 123 -
IO - braille.BrailleHandler.update (12:00:41.846):
Braille window dots: 123 123 123 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:41.848):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:41.848):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (12:00:41.858):
Braille regions text: [u'\u2807\u2807\u2807\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:41.858):
Braille window dots: 123 123 123 123 123 123 -
IO - braille.BrailleHandler.update (12:00:41.859):
Braille window dots: 123 123 123 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:41.861):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:41.861):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (12:00:41.869):
Braille regions text: [u'\u2807\u2807\u2807\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:41.871):
Braille window dots: 123 123 123 123 123 123 -
IO - braille.BrailleHandler.update (12:00:41.871):
Braille window dots: 123 123 123 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:41.871):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:41.872):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:42.111):
Got packet of type '\x03' with args: '\x01' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:42.134):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:42.388):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:42.516):
Got packet of type '\x03' with args: '\x07' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:42.884):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:43.270):
Got packet of type '\x03' with args: '\x06' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (12:00:43.272):
Input: br(freedomScientific):dot1+dot2+dot3
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:00:43.341):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
IO - braille.BrailleBuffer.update (12:00:43.407):
Braille regions text: [u'\u2807\u2807\u2807\u2807\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:43.407):
Braille window dots: 123 123 123 123 123 123 123 -
IO - braille.BrailleHandler.update (12:00:43.408):
Braille window dots: 123 123 123 123 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:43.410):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:43.411):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (12:00:43.474):
Braille regions text: [u'\u2807\u2807\u2807\u2807\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:43.474):
Braille window dots: 123 123 123 123 123 123 123 -
IO - braille.BrailleHandler.update (12:00:43.476):
Braille window dots: 123 123 123 123 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:43.476):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:43.477):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (12:00:43.486):
Braille regions text: [u'\u2807\u2807\u2807\u2807\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:43.486):
Braille window dots: 123 123 123 123 123 123 123 -
IO - braille.BrailleHandler.update (12:00:43.486):
Braille window dots: 123 123 123 123 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:43.487):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:43.489):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:43.700):
Got packet of type '\x03' with args: '\x04' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:43.726):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:43.980):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:44.108):
Got packet of type '\x03' with args: '\x07' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:44.489):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:44.904):
Got packet of type '\x03' with args: '\x03' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (12:00:44.904):
Input: br(freedomScientific):dot1+dot2+dot3
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:00:44.990):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
IO - braille.BrailleBuffer.update (12:00:45.101):
Braille regions text: [u'\u2807\u2807\u2807\u2807\u2807\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:45.101):
Braille window dots: 123 123 123 123 123 123 123 123 -
IO - braille.BrailleHandler.update (12:00:45.102):
Braille window dots: 123 123 123 123 123 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:45.104):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:45.105):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (12:00:45.114):
Braille regions text: [u'\u2807\u2807\u2807\u2807\u2807\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:45.115):
Braille window dots: 123 123 123 123 123 123 123 123 -
IO - braille.BrailleHandler.update (12:00:45.115):
Braille window dots: 123 123 123 123 123 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:45.115):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:45.117):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (12:00:45.125):
Braille regions text: [u'\u2807\u2807\u2807\u2807\u2807\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:45.127):
Braille window dots: 123 123 123 123 123 123 123 123 -
IO - braille.BrailleHandler.update (12:00:45.127):
Braille window dots: 123 123 123 123 123 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:45.128):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:45.128):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:45.312):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:45.625):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:45.706):
Got packet of type '\x03' with args: '\x07' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:46.141):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:46.446):
Got packet of type '\x03' with args: '\x05' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (12:00:46.447):
Input: br(freedomScientific):dot1+dot2+dot3
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:00:46.533):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
IO - braille.BrailleBuffer.update (12:00:46.638):
Braille regions text: [u'\u2807\u2807\u2807\u2807\u2807\u2807\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:46.638):
Braille window dots: 123 123 123 123 123 123 123 123 123 -
IO - braille.BrailleHandler.update (12:00:46.640):
Braille window dots: 123 123 123 123 123 123 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:46.641):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:46.641):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (12:00:46.653):
Braille regions text: [u'\u2807\u2807\u2807\u2807\u2807\u2807\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:46.653):
Braille window dots: 123 123 123 123 123 123 123 123 123 -
IO - braille.BrailleHandler.update (12:00:46.653):
Braille window dots: 123 123 123 123 123 123 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:46.654):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:46.654):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (12:00:46.664):
Braille regions text: [u'\u2807\u2807\u2807\u2807\u2807\u2807\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:46.664):
Braille window dots: 123 123 123 123 123 123 123 123 123 -
IO - braille.BrailleHandler.update (12:00:46.664):
Braille window dots: 123 123 123 123 123 123 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:46.665):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:46.667):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:46.907):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:47.180):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:47.690):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:48.180):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:48.691):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:49.190):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:49.687):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:50.197):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:50.694):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:51.197):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:51.703):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:52.209):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:52.701):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:53.006):
Got packet of type '\x03' with args: '\x00' '\x00' '\x02'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:53.056):
Got packet of type '\x03' with args: '\x00' '\x00' '\x03'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:53.157):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (12:00:53.157):
Input: br(freedomScientific):rightGDFButton
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:53.194):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:53.707):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:54.201):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:54.645):
Got packet of type '\x03' with args: '\x00' '\x00' '\x02'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:54.697):
Got packet of type '\x03' with args: '\x00' '\x00' '\x03'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:54.697):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:54.846):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (12:00:54.848):
Input: br(freedomScientific):rightGDFButton
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:55.197):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:55.706):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:56.194):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:56.329):
Got packet of type '\x03' with args: '\x00' '\x00' '\x02'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:56.381):
Got packet of type '\x03' with args: '\x00' '\x00' '\x03'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:56.681):
Got packet of type '\x03' with args: '\x00' '\x00' '\x02'
IO - inputCore.InputManager.executeGesture (12:00:56.681):
Input: br(freedomScientific):leftGDFButton+rightGDFButton
IO - braille.BrailleBuffer.update (12:00:56.753):
Braille regions text: [u'\u2807\u2807\u2807\u2807\u2807\u2807\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:00:56.753):
Braille window dots: 123 123 123 123 123 123 123 123 123 -
IO - braille.BrailleHandler.update (12:00:56.753):
Braille window dots: 123 123 123 123 123 123 123 123 123 -
IO - speech.speak (12:00:56.753):
Speaking [u'Braille tethered to focus']
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:56.753):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (12:00:56.756):
Braille regions text: [u'Braille tethered to focus']
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:56.756):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleHandler.update (12:00:56.756):
Braille window dots: 6 12 1235 123 - 2345 15 2346 1235 1246 - 2345 135 - 124 135 14 136 234
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:56.759):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:00:56.881):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:00:56.890):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:00:56.898):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:00:56.904):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:00:56.917):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:00:56.928):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:00:56.941):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:00:56.951):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:00:57.132):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleHandler.update (12:01:00.769):
Braille window dots: 123 123 123 123 123 123 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:00.770):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:01.266):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:01.779):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:02.283):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:02.779):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:03.273):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:03.785):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:04.275):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:04.779):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:05.279):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:05.457):
Got packet of type '\x04' with args: '\x08' '\x01' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:05.607):
Got packet of type '\x04' with args: '\x08' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (12:01:05.608):
Input: br(freedomScientific):routing
IO - braille.BrailleBuffer.update (12:01:05.700):
Braille regions text: [u'\u2807\u2807\u2807\u2807\u2807\u2807\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:01:05.701):
Braille window dots: 123 123 123 123 123 123 123 123 123 -
IO - braille.BrailleHandler.update (12:01:05.703):
Braille window dots: 123 123 123 123 123 123 123 123 123 -
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:05.703):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:05.704):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:06.206):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:06.700):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:07.197):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:07.709):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:08.200):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:08.709):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:09.098):
Got packet of type '\x04' with args: '\n' '\x01' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:09.206):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:09.299):
Got packet of type '\x04' with args: '\n' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (12:01:09.301):
Input: br(freedomScientific):routing
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:09.703):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:10.012):
Got packet of type '\x04' with args: '\t' '\x01' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:10.207):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:01:10.213):
Got packet of type '\x04' with args: '\t' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (12:01:10.213):
Input: br(freedomScientific):routing
IO - braille.BrailleBuffer.update (12:01:10.292):
Braille regions text: [u'\u2807\u2807\u2807\u2807\u2807\u2807\u2807\u2807\u2807 ']
IO - braille.BrailleHandler.update (12:01:10.292):
Braille window dots: 123 123 123 123 123 123 123 123 123 -
IO - braille.BrailleHandler.update (12:01:10.292):
Braille window dots: 123 123 123 123 123 123 123 123 123 -

@derekriemer
Copy link
Collaborator

Also, I can do this. LeftGDF+Right GDF:
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:35.831):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:36.338):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:36.836):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:37.349):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:37.364):
Got packet of type '\x03' with args: '\x00' '\x00' '\x01'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:37.414):
Got packet of type '\x03' with args: '\x00' '\x00' '\x03'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:37.852):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:38.364):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:38.617):
Got packet of type '\x03' with args: '\x00' '\x00' '\x02'
IO - inputCore.InputManager.executeGesture (12:06:38.617):
Input: br(freedomScientific):leftGDFButton+rightGDFButton
IO - braille.BrailleBuffer.update (12:06:38.651):
Braille regions text: [' ']
IO - braille.BrailleHandler.update (12:06:38.651):
Braille window dots: -
IO - braille.BrailleHandler.update (12:06:38.651):
Braille window dots: -
IO - speech.speak (12:06:38.653):
Speaking [u'Braille tethered to review']
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:38.653):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleBuffer.update (12:06:38.654):
Braille regions text: [u'Braille tethered to review']
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:38.654):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
IO - braille.BrailleHandler.update (12:06:38.654):
Braille window dots: 6 12 1235 123 - 2345 15 2346 1235 1246 - 2345 135 - 1235 15 1236 24 15 2456
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:38.657):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:38.667):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:06:39.115):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:06:39.122):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:06:39.131):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:06:39.142):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:06:39.151):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:06:39.161):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:06:39.173):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:06:39.181):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:06:39.194):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (12:06:39.203):
accRole failed: (-2147024809, 'The parameter is incorrect.', (None, None, None, 0, None))
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:41.002):
Got packet of type '\x03' with args: '\x00' '\x00' '\x02'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:41.052):
Got packet of type '\x03' with args: '\x00' '\x00' '\x03'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:41.552):
Got packet of type '\x03' with args: '\x00' '\x00' '\x02'
IO - inputCore.InputManager.executeGesture (12:06:41.553):
Input: br(freedomScientific):leftGDFButton+rightGDFButton
IO - braille.BrailleBuffer.update (12:06:41.618):
Braille regions text: [' ']
IO - speech.speak (12:06:41.619):
Speaking [u'Braille tethered to focus']
IO - braille.BrailleBuffer.update (12:06:41.621):
Braille regions text: [u'Braille tethered to focus']
IO - braille.BrailleHandler.update (12:06:41.621):
Braille window dots: 6 12 1235 123 - 2345 15 2346 1235 1246 - 2345 135 - 124 135 14 136 234
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:41.621):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:42.255):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:43.038):
Got packet of type '\x03' with args: '\x00' '\x00' '\x01'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:43.088):
Got packet of type '\x03' with args: '\x00' '\x00' '\x03'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:43.187):
Got packet of type '\x03' with args: '\x00' '\x00' '\x01'
IO - inputCore.InputManager.executeGesture (12:06:43.188):
Input: br(freedomScientific):leftGDFButton+rightGDFButton
IO - braille.BrailleBuffer.update (12:06:43.210):
Braille regions text: [' ']
IO - speech.speak (12:06:43.210):
Speaking [u'Braille tethered to review']
IO - braille.BrailleBuffer.update (12:06:43.211):
Braille regions text: [u'Braille tethered to review']
IO - braille.BrailleHandler.update (12:06:43.211):
Braille window dots: 6 12 1235 123 - 2345 15 2346 1235 1246 - 2345 135 - 1235 15 1236 24 15 2456
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:43.213):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:43.237):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:43.987):
Got packet of type '\x03' with args: '\x00' '\x00' '\x01'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:44.039):
Got packet of type '\x03' with args: '\x00' '\x00' '\x03'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (12:06:44.188):
Got packet of type '\x03' with args: '\x00' '\x00' '\x00'
IO - inputCore.InputManager.executeGesture (12:06:44.188):
Input: br(freedomScientific):rightGDFButton
IO - inputCore.InputManager.executeGesture (12:06:45.983):
Input: kb(desktop):NVDA+f1

@valiant8086
Copy link

Does it look like this won't be available for 2018.2? Interestingly, I just tried it in the next build that I just downloaded a few minutes ago, and there's no VFO or Freedom Scientific mentioned when I hit change in the new Settings under the braille category. It's got a lot of options but no VFO.

But, my existing installed ordinary copy of NVDA release, currently on 2018.1, doesn't list it either. How did I have it working before? I tested this try build at one point. I don't know how I selected it just with existing copies of NVDA let alone the try build.

When I tested this before with this try build however, it was working with my Focus 14 blue.

@derekriemer
Copy link
Collaborator

It's not in next.

@bramd
Copy link
Contributor Author

bramd commented Aug 5, 2018

@derekriemer It has been a while, but I've a Focus again for testing so I can finish this driver. Could you retest my branch? I think I've solved the handling of keys when multiple keys are released at the same time.

@lukaszgo1
Copy link
Contributor

@bramd I've tried your branch from source and the driver is working beautifully. Only thing which is missing are new assignments for alt+shift+tab and for windows+tab added in 2018.3. Is there anything which needs particular testing?

@MarcoZehe
Copy link
Contributor

Whoohoo this is exciting! I have a 5th generation Focus 40 Blue now. Please let me know if you need any testing with it, and which build I should grab for it. @bramd

@bramd
Copy link
Contributor Author

bramd commented Sep 28, 2018

@MarcoZehe commented on Sep 19, 2018, 7:59 AM GMT+2:

Whoohoo this is exciting! I have a 5th generation Focus 40 Blue now. Please let me know if you need any testing with it, and which build I should grab for it. @bramd

Yes please! This has not been tested with the fifth generation displays and that is a must for including it in NVDA, not supporting these displays would be a regression. I would like to clean up/refactor the code before doing a new build. I hope to finish this in the upcoming weeks.

Can you give me the vendor ID (VID) end product ID (PID) as displayed in Device manager for the display? Strangely, older Focus models show up in their own category in device manager and not in USB devices as you might expect. You can find the IDs on the details tab in the device properties. Select "Hardware IDs" from the list and you should see an ID in the form "USB\VID_xxx&PID_xxx". Without the correct IDs, the NVDA driver will not be able to detect the device at all.

@MarcoZehe
Copy link
Contributor

Got them for you! This display still shows up in that extra section. The value I got is:

USB\VID_0F4E&PID_0114

@bramd
Copy link
Contributor Author

bramd commented Sep 29, 2018 via email

@MarcoZehe
Copy link
Contributor

@bramd commented:

Things you can test:

  • Is automatic detection of the braille display working?

Yes, except when initially pairing the display via Bluetooth. Here's what I did:

  1. First tested the display over USB. Everything was working. Keys, input, autodetection, also the connection via selecting the driver directly.
  2. Unplugged the display and turned it back on to get Bluetooth.
  3. This computer had never connected to it via Bluetooth before. I established a connection.
  4. After the drivers had been installed and the wizard gave me the Finish button, the display was not automatically detected. I was on the Auto setting at the moment.
  5. Switched to the Freedom driver directly, and Connection to Auto. The display was then found.
  6. Switched the braille driver to AutoDetect, and the display remained working.
  • Does it work over USB and Bluetooth?

See above, apart from the initial connection where it is not detected unless I switch to the driver once explicitly, yes.

  • Does it work when it's selected manually and if so, does the port
    selection work as expected?

The port is auto, and the display is found in all cases.

  • Do all keys work and generate the expected key name (test using input
    help (nvda+1))?

Yes. The one peculiarity, which I've also seen on other display, with input help is, though, that the pan next and pan previous keys as well as the wiz wheel up and down produce the actual function, are not trapped and don't speak the function they perform. But they do perform the actions as expected, so they work, too.

  • Is braille input working as expected?

Yes.

  • Do you notice an other differences/regressions compared to the old driver?

No. It appears to be slightly more responsive. But that's a good thing. ;)

@MarcoZehe
Copy link
Contributor

OK, just oticed when plugging the display back in, that the driver sees the disconnection, but not the reconnection. So the transition from USB to Bluetooth and back does not work, I have to reselect the driver for the new connection to be used. So all you need to do to reproduce this is to connect and disconnect (and then turn on) the display to alter between USB and Bluetooth. The driver doesn't auto-detect the new connection, neither when on Auto nor when the Freedom driver is selected directly.

@LeonarddeR
Copy link
Collaborator

Could you please do the following:

  1. IN a python console: do: import config; config.conf["debugLog"]["hwIo"] = True
  2. Enable debug logging
  3. Enable auto detection and make sure that the device is connnected
  4. Disconnect and reconnect the device.
  5. CHeck the log whether there are any debug warnings like: Couldn't initialize display driver for kwargs xxx

A possible cause could be that bdDetect simply acts to quickly. This also happens with Hims devices when they are in the boot process, i.e. they enable the USB interface while the display is not yet ready to handle connections. For Hims, this has been solved by increasing the amount of connection attempts or the per connection timeout.

Also, some ports bring themselves in a broken state while disconnected too quickly. See this snippet from the handy tech driver:

	def terminate(self):
		try:
			super(BrailleDisplayDriver, self).terminate()
		finally:
			# We must sleep before closing the  connection as not doing this can leave the display in a bad state where it can not be re-initialized.
			# This has been observed for Easy Braille displays.
			time.sleep(self.timeout)
			# Make sure the device gets closed.
			self._dev.close()
			# We also must sleep after closing, as it sometimes takes some time for the device to disconnect.
			# This has been observed for Active Braille displays.
			time.sleep(self.timeout)

A nice test case could be manually selecting the display driver, and, after the display is properly connected, just open the display selection again and select the same driver.

@MarcoZehe
Copy link
Contributor

All right, here we go, be aware, this is a long comment with lots of log entry.

After step 2, I got:

DEBUG - braille.BrailleHandler.setDisplayByName (07:49:41.658):
Switching braille display from freedomScientific to noBraille
DEBUG - hwIo.IoBase.write (07:49:41.658):
Write: '\x81(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00W'
DEBUG - hwIo.IoBase.close (07:49:41.658):
Closing
DEBUG - hwIo.IoBase._notifyReceive (07:49:41.658):
Read: '\x01\x00\x00\x00'
INFO - braille.BrailleHandler.setDisplayByName (07:49:41.658):
Loaded braille display driver noBraille, current display has 0 cells.
ERROR - hwIo.IoBase._notifyReceive (07:49:41.658):
Traceback (most recent call last):
File "hwIo.pyc", line 147, in _notifyReceive
TypeError: 'NoneType' object is not callable
DEBUG - hwPortUtils.listUsbDevices (07:49:41.687):
u'VID_0F4E&PID_0114'
DEBUG - hwPortUtils.listUsbDevices (07:49:41.687):
u'VID_0CF3&PID_E300'
DEBUG - hwPortUtils.listUsbDevices (07:49:41.687):
u'VID_0C45&PID_6713'
DEBUG - hwPortUtils.listUsbDevices (07:49:41.687):
u'VID_04F3&PID_24A1'
DEBUG - hwPortUtils.listUsbDevices (07:49:41.687):
Finished listing USB devices
DEBUG - hwPortUtils.listHidDevices (07:49:41.687):
{'devicePath': u'\\?\hid#intc816&col0f#3&36a7043c&0&000e#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0F', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.687):
{'usbID': u'VID_04F3&PID_24A1', 'devicePath': u'\\?\hid#vid_04f3&pid_24a1&col04#6&cbf17ba&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VID_04F3&PID_24A1&REV_1111&Col04', 'provider': 'usb'}
DEBUG - hwPortUtils.listHidDevices (07:49:41.697):
{'devicePath': u'\\?\hid#dll07be&col01#5&388ea735&5&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VEN_DLL&DEV_07BE&Col01', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.697):
{'devicePath': u'\\?\hid#intc816&col02#3&36a7043c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col02', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.697):
{'devicePath': u'\\?\hid#dll07be&col02#5&388ea735&5&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VEN_DLL&DEV_07BE&Col02', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.697):
{'devicePath': u'\\?\hid#intc816&col03#3&36a7043c&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col03', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.697):
{'devicePath': u'\\?\hid#dll07be&col03#5&388ea735&5&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VEN_DLL&DEV_07BE&Col03', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.697):
{'devicePath': u'\\?\hid#intc816&col04#3&36a7043c&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col04', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.697):
{'devicePath': u'\\?\hid#dll07be&col04#5&388ea735&5&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VEN_DLL&DEV_07BE&Col04', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.697):
{'devicePath': u'\\?\hid#intc816&col05#3&36a7043c&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col05', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.697):
{'devicePath': u'\\?\hid#intc816&col06#3&36a7043c&0&0005#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col06', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.697):
{'devicePath': u'\\?\hid#intc816&col0a#3&36a7043c&0&0009#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0A', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.697):
{'devicePath': u'\\?\hid#intc816&col07#3&36a7043c&0&0006#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col07', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.697):
{'devicePath': u'\\?\hid#intc816&col08#3&36a7043c&0&0007#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col08', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.697):
{'devicePath': u'\\?\hid#intc816&col09#3&36a7043c&0&0008#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col09', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.697):
{'usbID': u'VID_04F3&PID_24A1', 'devicePath': u'\\?\hid#vid_04f3&pid_24a1&col01#6&cbf17ba&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VID_04F3&PID_24A1&REV_1111&Col01', 'provider': 'usb'}
DEBUG - hwPortUtils.listHidDevices (07:49:41.703):
{'devicePath': u'\\?\hid#intc816&col01#3&36a7043c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd', 'hardwareID': u'HID\INTC816&Col01', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.703):
{'devicePath': u'\\?\hid#intc816&col11#3&36a7043c&0&0010#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col11', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.703):
{'usbID': u'VID_04F3&PID_24A1', 'devicePath': u'\\?\hid#vid_04f3&pid_24a1&col02#6&cbf17ba&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VID_04F3&PID_24A1&REV_1111&Col02', 'provider': 'usb'}
DEBUG - hwPortUtils.listHidDevices (07:49:41.703):
{'devicePath': u'\\?\hid#intc816&col10#3&36a7043c&0&000f#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col10', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.703):
{'devicePath': u'\\?\hid#intc816&col12#3&36a7043c&0&0011#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col12', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.703):
{'devicePath': u'\\?\hid#converteddevice&col02#5&7674e02&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\ConvertedDevice&Col02', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.703):
{'devicePath': u'\\?\hid#converteddevice&col01#5&7674e02&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd', 'hardwareID': u'HID\ConvertedDevice&Col01', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.703):
{'devicePath': u'\\?\hid#intc816&col0b#3&36a7043c&0&000a#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0B', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.703):
{'devicePath': u'\\?\hid#intc816&col0c#3&36a7043c&0&000b#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0C', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.703):
{'usbID': u'VID_04F3&PID_24A1', 'devicePath': u'\\?\hid#vid_04f3&pid_24a1&col03#6&cbf17ba&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VID_04F3&PID_24A1&REV_1111&Col03', 'provider': 'usb'}
DEBUG - hwPortUtils.listHidDevices (07:49:41.703):
{'devicePath': u'\\?\hid#intc816&col0d#3&36a7043c&0&000c#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0D', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.703):
{'devicePath': u'\\?\hid#converteddevice&col03#5&7674e02&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\ConvertedDevice&Col03', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.703):
{'devicePath': u'\\?\hid#intc816&col0e#3&36a7043c&0&000d#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0E', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:49:41.703):
Finished listing HID devices
DEBUG - hwPortUtils.listComPorts (07:49:41.703):
{'friendlyName': u'Standardm\xe4\xdfgige Seriell-\xfcber-Bluetooth-Verbindung (COM3)', 'bluetoothName': u'Focus 40 BT 22E86182', 'hardwareID': u'BTHENUM\{00001101-0000-1000-8000-00805f9b34fb}_LOCALMFG&001d', 'bluetoothAddress': 194137402401154L, 'port': u'COM3'}
DEBUG - hwPortUtils.listComPorts (07:49:41.710):
{'friendlyName': u'Standardm\xe4\xdfgige Seriell-\xfcber-Bluetooth-Verbindung (COM4)', 'hardwareID': u'BTHENUM\{00001101-0000-1000-8000-00805f9b34fb}_LOCALMFG&0000', 'bluetoothAddress': 0, 'port': u'COM4'}
DEBUG - hwPortUtils.listComPorts (07:49:41.710):
Finished listing com ports
DEBUG - braille.BrailleHandler.setDisplayByName (07:49:41.710):
Possibly detected display 'Freedom Scientific Focus- / PAC-Mate-Serien'
DEBUG - hwIo.Bulk.init (07:49:41.710):
Opening device \?\usb#vid_0f4e&pid_0114#1234567#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
DEBUG - hwIo.IoBase.write (07:49:41.710):
Write: '\x00\x00\x00\x00'
DEBUG - hwIo.IoBase.waitForRead (07:49:41.710):
Waiting interrupted by completed i/o
DEBUG - hwIo.IoBase._notifyReceive (07:49:41.710):
Read: '\x01\x00\x00\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (07:49:41.710):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - hwIo.IoBase.waitForRead (07:49:41.710):
Waiting interrupted by completed i/o
DEBUG - hwIo.IoBase._notifyReceive (07:49:41.710):
Read: '\x800\x00\x00FREEDOM SCIENTIFIC\x00\x00\x00\x00\x00\x00Focus 40\x00\x00\x00\x00\x00\x00\x00\x005.81-34\x00i'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (07:49:41.710):
Got packet of type '\x80' with args: '0' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._handlePacket (07:49:41.710):
Device info: manufacturer: FREEDOM SCIENTIFIC model: Focus 40, version: 5.81-34
DEBUG - hwIo.IoBase.waitForRead (07:49:41.710):
Waiting interrupted by completed i/o
INFO - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver.init (07:49:41.710):
Found Focus 40 connected via custom (\?\usb#vid_0f4e&pid_0114#1234567#{a5dcbf10-6530-11d2-901f-00c04fb951ed})
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._configureDisplay (07:49:41.710):
Activating extended keys on freedom Scientific display. Display name: Focus 40, firmware version: 5.81-34.
DEBUG - hwIo.IoBase.write (07:49:41.710):
Write: '\x0f\x02\x00\x00'
DEBUG - braille.BrailleHandler.setDisplayByName (07:49:41.716):
Switching braille display from noBraille to freedomScientific
INFO - braille.BrailleHandler.setDisplayByName (07:49:41.716):
Loaded braille display driver freedomScientific, current display has 40 cells.

After disconnecting the display from USB, I got:

ERROR - unhandled exception (07:49:57.563):
Traceback (most recent call last):
File "_ctypes/callbacks.c", line 315, in 'calling callback function'
File "hwIo.pyc", line 134, in _ioDone
WindowsError: [Error 31] Ein an das System angeschlossenes Gerät funktioniert nicht.

(this means that a device connected to the computer is not working properly.)

I then reconnected the display, but NVDA didn't react at all. I waited about 30 seconds, then pressed NVDA+N to open the menu to switch the diplay.

The log continues straight from where I left off above, notice the time stamp changing, there was no activity in-between, so there was no notice of the display reconnecting.

IO - inputCore.InputManager.executeGesture (07:50:38.730):
Input: kb(laptop):NVDA+n
DEBUG - gui.MainFrame.evaluateUpdatePendingUpdateMenuItemCommand (07:50:38.746):
Error while removing pending update menu item
Traceback (most recent call last):
File "gui_init_.pyc", line 220, in evaluateUpdatePendingUpdateMenuItemCommand
wxAssertionError: C++ assertion "node" failed at ....\src\msw\menu.cpp(890) in wxMenu::DoRemove(): bug in wxMenu::Remove logic
IO - speech.speak (07:50:38.799):
Speaking [u'NVDA Men\xfc']
DEBUG - NVDAObjects.NVDAObject._get_placeholder (07:50:38.799):
Potential unimplemented child class: <NVDAObjects.IAccessible.IAccessible object at 0x0ACC5030>
IO - braille.BrailleBuffer.update (07:50:38.799):
Braille regions text: [u'NVDA mn']
IO - braille.BrailleHandler.update (07:50:38.799):
Braille window dots: 13457 12367 1457 17 - 134 1345
DEBUG - hwIo.IoBase.write (07:50:38.799):
Write: '\x81(\x00\x00]gYA\x00\r\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf'
DEBUG - hwIo.IoBase.write (07:50:38.799):
Write failed: [Error 22] Das Gerät erkennt den Befehl nicht.
ERROR - braille.executor (07:50:38.799):
Error displaying cells. Disabling display
Traceback (most recent call last):
File "braille.pyc", line 2079, in executor
File "brailleDisplayDrivers\freedomScientific.pyc", line 343, in display
File "brailleDisplayDrivers\freedomScientific.pyc", line 190, in _sendPacket
File "hwIo.pyc", line 101, in write
WindowsError: [Error 22] Das Gerät erkennt den Befehl nicht.
ERROR - braille.BrailleHandler.handleDisplayUnavailable (07:50:39.765):
Braille display unavailable. Disabling
Traceback (most recent call last):
File "braille.pyc", line 2079, in executor
File "brailleDisplayDrivers\freedomScientific.pyc", line 343, in display
File "brailleDisplayDrivers\freedomScientific.pyc", line 190, in _sendPacket
File "hwIo.pyc", line 101, in write
WindowsError: [Error 22] Das Gerät erkennt den Befehl nicht.
DEBUG - braille.BrailleHandler.setDisplayByName (07:50:39.801):
Switching braille display from freedomScientific to noBraille
DEBUG - hwIo.IoBase.write (07:50:39.801):
Write: '\x81(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00W'
DEBUG - hwIo.IoBase.write (07:50:39.801):
Write failed: [Error 22] Das Gerät erkennt den Befehl nicht.
DEBUG - hwIo.IoBase.close (07:50:39.801):
Closing
INFO - braille.BrailleHandler.setDisplayByName (07:50:39.801):
Loaded braille display driver noBraille, current display has 0 cells.
DEBUG - hwPortUtils.listUsbDevices (07:50:39.801):
u'VID_0F4E&PID_0114'
DEBUG - hwPortUtils.listUsbDevices (07:50:39.801):
u'VID_0CF3&PID_E300'
DEBUG - hwPortUtils.listUsbDevices (07:50:39.801):
u'VID_0C45&PID_6713'
DEBUG - hwPortUtils.listUsbDevices (07:50:39.801):
u'VID_04F3&PID_24A1'
DEBUG - hwPortUtils.listUsbDevices (07:50:39.801):
Finished listing USB devices
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#intc816&col0f#3&36a7043c&0&000e#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0F', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'usbID': u'VID_04F3&PID_24A1', 'devicePath': u'\\?\hid#vid_04f3&pid_24a1&col04#6&cbf17ba&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VID_04F3&PID_24A1&REV_1111&Col04', 'provider': 'usb'}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#dll07be&col01#5&388ea735&5&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VEN_DLL&DEV_07BE&Col01', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#intc816&col02#3&36a7043c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col02', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#dll07be&col02#5&388ea735&5&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VEN_DLL&DEV_07BE&Col02', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#intc816&col03#3&36a7043c&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col03', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#dll07be&col03#5&388ea735&5&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VEN_DLL&DEV_07BE&Col03', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#intc816&col04#3&36a7043c&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col04', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#dll07be&col04#5&388ea735&5&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VEN_DLL&DEV_07BE&Col04', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#intc816&col05#3&36a7043c&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col05', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#intc816&col06#3&36a7043c&0&0005#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col06', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#intc816&col0a#3&36a7043c&0&0009#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0A', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#intc816&col07#3&36a7043c&0&0006#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col07', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#intc816&col08#3&36a7043c&0&0007#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col08', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#intc816&col09#3&36a7043c&0&0008#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col09', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'usbID': u'VID_04F3&PID_24A1', 'devicePath': u'\\?\hid#vid_04f3&pid_24a1&col01#6&cbf17ba&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VID_04F3&PID_24A1&REV_1111&Col01', 'provider': 'usb'}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#intc816&col01#3&36a7043c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd', 'hardwareID': u'HID\INTC816&Col01', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#intc816&col11#3&36a7043c&0&0010#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col11', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'usbID': u'VID_04F3&PID_24A1', 'devicePath': u'\\?\hid#vid_04f3&pid_24a1&col02#6&cbf17ba&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VID_04F3&PID_24A1&REV_1111&Col02', 'provider': 'usb'}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#intc816&col10#3&36a7043c&0&000f#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col10', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#intc816&col12#3&36a7043c&0&0011#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col12', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#converteddevice&col02#5&7674e02&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\ConvertedDevice&Col02', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#converteddevice&col01#5&7674e02&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd', 'hardwareID': u'HID\ConvertedDevice&Col01', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#intc816&col0b#3&36a7043c&0&000a#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0B', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#intc816&col0c#3&36a7043c&0&000b#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0C', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'usbID': u'VID_04F3&PID_24A1', 'devicePath': u'\\?\hid#vid_04f3&pid_24a1&col03#6&cbf17ba&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VID_04F3&PID_24A1&REV_1111&Col03', 'provider': 'usb'}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#intc816&col0d#3&36a7043c&0&000c#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0D', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#converteddevice&col03#5&7674e02&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\ConvertedDevice&Col03', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
{'devicePath': u'\\?\hid#intc816&col0e#3&36a7043c&0&000d#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0E', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (07:50:39.801):
Finished listing HID devices
DEBUG - hwPortUtils.listComPorts (07:50:39.809):
{'friendlyName': u'Standardm\xe4\xdfgige Seriell-\xfcber-Bluetooth-Verbindung (COM3)', 'bluetoothName': u'Focus 40 BT 22E86182', 'hardwareID': u'BTHENUM\{00001101-0000-1000-8000-00805f9b34fb}_LOCALMFG&001d', 'bluetoothAddress': 194137402401154L, 'port': u'COM3'}
DEBUG - hwPortUtils.listComPorts (07:50:39.809):
{'friendlyName': u'Standardm\xe4\xdfgige Seriell-\xfcber-Bluetooth-Verbindung (COM4)', 'hardwareID': u'BTHENUM\{00001101-0000-1000-8000-00805f9b34fb}_LOCALMFG&0000', 'bluetoothAddress': 0, 'port': u'COM4'}
DEBUG - hwPortUtils.listComPorts (07:50:39.809):
Finished listing com ports
DEBUG - braille.BrailleHandler.setDisplayByName (07:50:39.809):
Possibly detected display 'Freedom Scientific Focus- / PAC-Mate-Serien'
DEBUG - hwIo.Bulk.init (07:50:39.809):
Opening device \?\usb#vid_0f4e&pid_0114#1234567#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
DEBUG - hwIo.IoBase.write (07:50:39.809):
Write: '\x00\x00\x00\x00'
DEBUG - hwIo.IoBase.waitForRead (07:50:39.809):
Waiting interrupted by completed i/o
DEBUG - hwIo.IoBase._notifyReceive (07:50:39.809):
Read: '\x01\x00\x00\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (07:50:39.809):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - hwIo.IoBase.waitForRead (07:50:39.809):
Waiting interrupted by completed i/o
DEBUG - hwIo.IoBase._notifyReceive (07:50:39.809):
Read: '\x800\x00\x00FREEDOM SCIENTIFIC\x00\x00\x00\x00\x00\x00Focus 40\x00\x00\x00\x00\x00\x00\x00\x005.81-34\x00i'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (07:50:39.809):
Got packet of type '\x80' with args: '0' '\x00' '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._handlePacket (07:50:39.809):
Device info: manufacturer: FREEDOM SCIENTIFIC model: Focus 40, version: 5.81-34
DEBUG - hwIo.IoBase.waitForRead (07:50:39.809):
Waiting interrupted by completed i/o
INFO - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver.init (07:50:39.809):
Found Focus 40 connected via custom (\?\usb#vid_0f4e&pid_0114#1234567#{a5dcbf10-6530-11d2-901f-00c04fb951ed})
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._configureDisplay (07:50:39.809):
Activating extended keys on freedom Scientific display. Display name: Focus 40, firmware version: 5.81-34.
DEBUG - hwIo.IoBase.write (07:50:39.809):
Write: '\x0f\x02\x00\x00'
DEBUG - braille.BrailleHandler.setDisplayByName (07:50:39.809):
Switching braille display from noBraille to freedomScientific
INFO - braille.BrailleHandler.setDisplayByName (07:50:39.809):
Loaded braille display driver freedomScientific, current display has 40 cells.

It then displayed the NVDA menu. So it did detect the display again, but only after I pressed an NVDA command.

@LeonarddeR
Copy link
Collaborator

I think the reason why it only picked up the device after opening the NVDA menu, was that there were no attempts to write to the braille display in the period of 30 second that you waited. It looks like the display driver did terminate after the 30 seconds of inactivity, why you would expect it to terminate as soon as there is connection loss.

@MarcoZehe
Copy link
Contributor

MarcoZehe commented Oct 4, 2018 via email

@LeonarddeR
Copy link
Collaborator

LeonarddeR commented Oct 4, 2018 via email

@MarcoZehe
Copy link
Contributor

Hm, the results are inconclusive. Often, when I disconnect and reconnect the display via USB, the connection is then established via Bluetooth instead. A typical log entry looks like this:

ERROR - unhandled exception (11:58:52.460):
Traceback (most recent call last):
File "_ctypes/callbacks.c", line 315, in 'calling callback function'
File "hwIo.pyc", line 134, in _ioDone
WindowsError: [Error 31] Ein an das System angeschlossenes Gerät funktioniert nicht.
DEBUG - hwIo.IoBase.write (11:58:53.474):
Write: '\x81(\x00\x00\r5\x00\x11\x0b\x00\xc0\x00\x11\x0b\x00\x11\x1d\x19\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5'
DEBUG - hwIo.IoBase.write (11:58:53.474):
Write failed: [Error 22] Das Gerät erkennt den Befehl nicht.
ERROR - braille.executor (11:58:53.474):
Error displaying cells. Disabling display
Traceback (most recent call last):
File "braille.pyc", line 2079, in executor
File "brailleDisplayDrivers\freedomScientific.pyc", line 343, in display
File "brailleDisplayDrivers\freedomScientific.pyc", line 190, in _sendPacket
File "hwIo.pyc", line 101, in write
WindowsError: [Error 22] Das Gerät erkennt den Befehl nicht.
ERROR - braille.BrailleHandler.handleDisplayUnavailable (11:58:53.507):
Braille display unavailable. Disabling
Traceback (most recent call last):
File "braille.pyc", line 2079, in executor
File "brailleDisplayDrivers\freedomScientific.pyc", line 343, in display
File "brailleDisplayDrivers\freedomScientific.pyc", line 190, in _sendPacket
File "hwIo.pyc", line 101, in write
WindowsError: [Error 22] Das Gerät erkennt den Befehl nicht.
DEBUG - braille.BrailleHandler.setDisplayByName (11:58:53.538):
Switching braille display from freedomScientific to noBraille
DEBUG - hwIo.IoBase.write (11:58:53.538):
Write: '\x81(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00W'
DEBUG - hwIo.IoBase.write (11:58:53.538):
Write failed: [Error 22] Das Gerät erkennt den Befehl nicht.
DEBUG - hwIo.IoBase.close (11:58:53.538):
Closing
INFO - braille.BrailleHandler.setDisplayByName (11:58:53.538):
Loaded braille display driver noBraille, current display has 0 cells.
DEBUG - hwPortUtils.listUsbDevices (11:58:53.543):
u'VID_0CF3&PID_E300'
DEBUG - hwPortUtils.listUsbDevices (11:58:53.543):
u'VID_0C45&PID_6713'
DEBUG - hwPortUtils.listUsbDevices (11:58:53.543):
u'VID_04F3&PID_24A1'
DEBUG - hwPortUtils.listUsbDevices (11:58:53.543):
Finished listing USB devices
DEBUG - hwPortUtils.listHidDevices (11:58:53.543):
{'devicePath': u'\\?\hid#intc816&col0f#3&36a7043c&0&000e#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0F', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.543):
{'usbID': u'VID_04F3&PID_24A1', 'devicePath': u'\\?\hid#vid_04f3&pid_24a1&col04#6&cbf17ba&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VID_04F3&PID_24A1&REV_1111&Col04', 'provider': 'usb'}
DEBUG - hwPortUtils.listHidDevices (11:58:53.543):
{'devicePath': u'\\?\hid#dll07be&col01#5&388ea735&5&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VEN_DLL&DEV_07BE&Col01', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.543):
{'devicePath': u'\\?\hid#intc816&col02#3&36a7043c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col02', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.543):
{'devicePath': u'\\?\hid#dll07be&col02#5&388ea735&5&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VEN_DLL&DEV_07BE&Col02', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.543):
{'devicePath': u'\\?\hid#intc816&col03#3&36a7043c&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col03', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.543):
{'devicePath': u'\\?\hid#dll07be&col03#5&388ea735&5&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VEN_DLL&DEV_07BE&Col03', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.543):
{'devicePath': u'\\?\hid#intc816&col04#3&36a7043c&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col04', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.543):
{'devicePath': u'\\?\hid#dll07be&col04#5&388ea735&5&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VEN_DLL&DEV_07BE&Col04', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.543):
{'devicePath': u'\\?\hid#intc816&col05#3&36a7043c&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col05', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.549):
{'devicePath': u'\\?\hid#intc816&col06#3&36a7043c&0&0005#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col06', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.549):
{'devicePath': u'\\?\hid#intc816&col0a#3&36a7043c&0&0009#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0A', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.549):
{'devicePath': u'\\?\hid#intc816&col07#3&36a7043c&0&0006#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col07', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.549):
{'devicePath': u'\\?\hid#intc816&col08#3&36a7043c&0&0007#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col08', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.549):
{'devicePath': u'\\?\hid#intc816&col09#3&36a7043c&0&0008#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col09', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.549):
{'usbID': u'VID_04F3&PID_24A1', 'devicePath': u'\\?\hid#vid_04f3&pid_24a1&col01#6&cbf17ba&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VID_04F3&PID_24A1&REV_1111&Col01', 'provider': 'usb'}
DEBUG - hwPortUtils.listHidDevices (11:58:53.549):
{'devicePath': u'\\?\hid#intc816&col01#3&36a7043c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd', 'hardwareID': u'HID\INTC816&Col01', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.549):
{'devicePath': u'\\?\hid#intc816&col11#3&36a7043c&0&0010#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col11', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.549):
{'usbID': u'VID_04F3&PID_24A1', 'devicePath': u'\\?\hid#vid_04f3&pid_24a1&col02#6&cbf17ba&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VID_04F3&PID_24A1&REV_1111&Col02', 'provider': 'usb'}
DEBUG - hwPortUtils.listHidDevices (11:58:53.549):
{'devicePath': u'\\?\hid#intc816&col10#3&36a7043c&0&000f#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col10', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.549):
{'devicePath': u'\\?\hid#intc816&col12#3&36a7043c&0&0011#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col12', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.549):
{'devicePath': u'\\?\hid#converteddevice&col02#5&7674e02&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\ConvertedDevice&Col02', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.549):
{'devicePath': u'\\?\hid#converteddevice&col01#5&7674e02&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd', 'hardwareID': u'HID\ConvertedDevice&Col01', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.549):
{'devicePath': u'\\?\hid#intc816&col0b#3&36a7043c&0&000a#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0B', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.549):
{'devicePath': u'\\?\hid#intc816&col0c#3&36a7043c&0&000b#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0C', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.549):
{'usbID': u'VID_04F3&PID_24A1', 'devicePath': u'\\?\hid#vid_04f3&pid_24a1&col03#6&cbf17ba&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VID_04F3&PID_24A1&REV_1111&Col03', 'provider': 'usb'}
DEBUG - hwPortUtils.listHidDevices (11:58:53.549):
{'devicePath': u'\\?\hid#intc816&col0d#3&36a7043c&0&000c#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0D', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.549):
{'devicePath': u'\\?\hid#converteddevice&col03#5&7674e02&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\ConvertedDevice&Col03', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.549):
{'devicePath': u'\\?\hid#intc816&col0e#3&36a7043c&0&000d#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0E', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (11:58:53.553):
Finished listing HID devices
DEBUG - hwPortUtils.listComPorts (11:58:53.553):
{'friendlyName': u'Standardm\xe4\xdfgige Seriell-\xfcber-Bluetooth-Verbindung (COM3)', 'bluetoothName': u'Focus 40 BT 22E86182', 'hardwareID': u'BTHENUM\{00001101-0000-1000-8000-00805f9b34fb}_LOCALMFG&001d', 'bluetoothAddress': 194137402401154L, 'port': u'COM3'}
DEBUG - hwPortUtils.listComPorts (11:58:53.553):
{'friendlyName': u'Standardm\xe4\xdfgige Seriell-\xfcber-Bluetooth-Verbindung (COM4)', 'hardwareID': u'BTHENUM\{00001101-0000-1000-8000-00805f9b34fb}_LOCALMFG&0000', 'bluetoothAddress': 0, 'port': u'COM4'}
DEBUG - hwPortUtils.listComPorts (11:58:53.553):
Finished listing com ports
DEBUG - braille.BrailleHandler.setDisplayByName (11:58:53.553):
Possibly detected display 'Freedom Scientific Focus- / PAC-Mate-Serien'
DEBUG - hwIo.Serial.init (11:58:53.553):
Opening port COM3
DEBUG - hwIo.Serial.init (11:58:58.743):
Open failed: could not open port u'COM3': WindowsError(121, 'Das Zeitlimit f\xfcr die Semaphore wurde erreicht.')
DEBUGWARNING - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver.init (11:58:58.743):
Traceback (most recent call last):
File "brailleDisplayDrivers\freedomScientific.pyc", line 132, in init
File "hwIo.pyc", line 170, in init
File "serial\serialwin32.pyc", line 38, in init
File "serial\serialutil.pyc", line 282, in init
File "serial\serialwin32.pyc", line 66, in open
SerialException: could not open port u'COM3': WindowsError(121, 'Das Zeitlimit f\xfcr die Semaphore wurde erreicht.')
DEBUGWARNING - braille.BrailleHandler.setDisplayByName (11:58:58.743):
Couldn't initialize display driver for kwargs {'port': DeviceMatch(type='serial', id=u'Focus 40 BT 22E86182', port=u'COM3', deviceInfo={'friendlyName': u'Standardm\xe4\xdfgige Seriell-\xfcber-Bluetooth-Verbindung (COM3)', 'bluetoothName': u'Focus 40 BT 22E86182', 'hardwareID': u'BTHENUM\{00001101-0000-1000-8000-00805f9b34fb}_LOCALMFG&001d', 'bluetoothAddress': 194137402401154L, 'port': u'COM3'})}
Traceback (most recent call last):
File "braille.pyc", line 1661, in setDisplayByName
File "brailleDisplayDrivers\freedomScientific.pyc", line 152, in init
RuntimeError: No Freedom Scientific display found
DEBUG - braille.BrailleHandler.setDisplayByName (11:58:58.743):
Reinitializing noBraille braille display
INFO - braille.BrailleHandler.setDisplayByName (11:58:58.743):
Loaded braille display driver noBraille, current display has 0 cells.
DEBUG - braille.BrailleHandler.setDisplayByName (11:59:00.517):
Possibly detected display 'Freedom Scientific Focus- / PAC-Mate-Serien'
DEBUG - hwIo.Serial.init (11:59:00.517):
Opening port COM3
DEBUG - hwIo.Serial.write (11:59:04.813):
Write: '\x00\x00\x00\x00'
DEBUG - hwIo.IoBase.waitForRead (11:59:04.829):
Waiting interrupted by completed i/o
DEBUG - hwIo.IoBase._notifyReceive (11:59:04.829):
Read: '\x01'
DEBUG - hwIo.Serial.read (11:59:04.829):
Read: '\x00'
DEBUG - hwIo.Serial.read (11:59:04.829):
Read: '\x00'
DEBUG - hwIo.Serial.read (11:59:04.829):
Read: '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:04.829):
Got packet of type '\x01' with args: '\x00' '\x00' '\x00'
DEBUG - hwIo.IoBase._notifyReceive (11:59:04.829):
Read: '\x80'
DEBUG - hwIo.Serial.read (11:59:04.829):
Read: '0'
DEBUG - hwIo.Serial.read (11:59:04.845):
Read: '\x00'
DEBUG - hwIo.Serial.read (11:59:04.845):
Read: '\x00'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._onReceive (11:59:04.845):
Got packet of type '\x80' with args: '0' '\x00' '\x00'
DEBUG - hwIo.Serial.read (11:59:04.845):
Read: 'FREEDOM SCIENTIFIC\x00\x00\x00\x00\x00\x00Focus 40\x00\x00\x00\x00\x00\x00\x00\x005.81-34\x00'
DEBUG - hwIo.Serial.read (11:59:04.845):
Read: 'i'
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._handlePacket (11:59:04.845):
Device info: manufacturer: FREEDOM SCIENTIFIC model: Focus 40, version: 5.81-34
DEBUG - hwIo.IoBase.waitForRead (11:59:04.845):
Waiting interrupted by completed i/o
INFO - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver.init (11:59:04.845):
Found Focus 40 connected via serial (COM3)
DEBUG - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver._configureDisplay (11:59:04.845):
Activating extended keys on freedom Scientific display. Display name: Focus 40, firmware version: 5.81-34.
DEBUG - hwIo.Serial.write (11:59:04.845):
Write: '\x0f\x02\x00\x00'
DEBUG - braille.BrailleHandler.setDisplayByName (11:59:04.845):
Switching braille display from noBraille to freedomScientific
INFO - braille.BrailleHandler.setDisplayByName (11:59:04.845):
Loaded braille display driver freedomScientific, current display has 40 cells.

One thing that then doesn't work without me reloading the Auto driver from the Braille Settings dialog is to switch the display connection to USB. The connection is lost, but not reestablished via USB, even though the display is already available.
ERROR - unhandled exception (12:01:01.328):
Traceback (most recent call last):
File "_ctypes/callbacks.c", line 315, in 'calling callback function'
File "hwIo.pyc", line 134, in _ioDone
WindowsError: [Error 31] Ein an das System angeschlossenes Gerät funktioniert nicht.
DEBUG - hwIo.IoBase.write (12:01:01.480):
Write: '\x81(\x00\x00\r5\x00\x11\x0b\x00\x00\x00\x11\x0b\x00\x11\x1d\x19\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85'
DEBUG - hwIo.IoBase.write (12:01:01.480):
Write failed: [Error 22] Das Gerät erkennt den Befehl nicht.
ERROR - braille.executor (12:01:01.480):
Error displaying cells. Disabling display
Traceback (most recent call last):
File "braille.pyc", line 2079, in executor
File "brailleDisplayDrivers\freedomScientific.pyc", line 343, in display
File "brailleDisplayDrivers\freedomScientific.pyc", line 190, in _sendPacket
File "hwIo.pyc", line 101, in write
WindowsError: [Error 22] Das Gerät erkennt den Befehl nicht.
ERROR - braille.BrailleHandler.handleDisplayUnavailable (12:01:01.526):
Braille display unavailable. Disabling
Traceback (most recent call last):
File "braille.pyc", line 2079, in executor
File "brailleDisplayDrivers\freedomScientific.pyc", line 343, in display
File "brailleDisplayDrivers\freedomScientific.pyc", line 190, in _sendPacket
File "hwIo.pyc", line 101, in write
WindowsError: [Error 22] Das Gerät erkennt den Befehl nicht.
DEBUG - braille.BrailleHandler.setDisplayByName (12:01:01.566):
Switching braille display from freedomScientific to noBraille
DEBUG - hwIo.IoBase.write (12:01:01.566):
Write: '\x81(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00W'
DEBUG - hwIo.IoBase.write (12:01:01.566):
Write failed: [Error 22] Das Gerät erkennt den Befehl nicht.
DEBUG - hwIo.IoBase.close (12:01:01.566):
Closing
INFO - braille.BrailleHandler.setDisplayByName (12:01:01.566):
Loaded braille display driver noBraille, current display has 0 cells.
DEBUG - hwPortUtils.listUsbDevices (12:01:01.566):
u'VID_0CF3&PID_E300'
DEBUG - hwPortUtils.listUsbDevices (12:01:01.566):
u'VID_0C45&PID_6713'
DEBUG - hwPortUtils.listUsbDevices (12:01:01.566):
u'VID_04F3&PID_24A1'
DEBUG - hwPortUtils.listUsbDevices (12:01:01.566):
Finished listing USB devices
DEBUG - hwPortUtils.listHidDevices (12:01:01.566):
{'devicePath': u'\\?\hid#intc816&col0f#3&36a7043c&0&000e#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0F', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.566):
{'usbID': u'VID_04F3&PID_24A1', 'devicePath': u'\\?\hid#vid_04f3&pid_24a1&col04#6&cbf17ba&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VID_04F3&PID_24A1&REV_1111&Col04', 'provider': 'usb'}
DEBUG - hwPortUtils.listHidDevices (12:01:01.566):
{'devicePath': u'\\?\hid#dll07be&col01#5&388ea735&5&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VEN_DLL&DEV_07BE&Col01', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.566):
{'devicePath': u'\\?\hid#intc816&col02#3&36a7043c&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col02', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.566):
{'devicePath': u'\\?\hid#dll07be&col02#5&388ea735&5&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VEN_DLL&DEV_07BE&Col02', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.566):
{'devicePath': u'\\?\hid#intc816&col03#3&36a7043c&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col03', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.566):
{'devicePath': u'\\?\hid#dll07be&col03#5&388ea735&5&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VEN_DLL&DEV_07BE&Col03', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.566):
{'devicePath': u'\\?\hid#intc816&col04#3&36a7043c&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col04', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.566):
{'devicePath': u'\\?\hid#dll07be&col04#5&388ea735&5&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VEN_DLL&DEV_07BE&Col04', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.566):
{'devicePath': u'\\?\hid#intc816&col05#3&36a7043c&0&0004#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col05', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.566):
{'devicePath': u'\\?\hid#intc816&col06#3&36a7043c&0&0005#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col06', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.566):
{'devicePath': u'\\?\hid#intc816&col0a#3&36a7043c&0&0009#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0A', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.566):
{'devicePath': u'\\?\hid#intc816&col07#3&36a7043c&0&0006#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col07', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.566):
{'devicePath': u'\\?\hid#intc816&col08#3&36a7043c&0&0007#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col08', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.576):
{'devicePath': u'\\?\hid#intc816&col09#3&36a7043c&0&0008#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col09', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.576):
{'usbID': u'VID_04F3&PID_24A1', 'devicePath': u'\\?\hid#vid_04f3&pid_24a1&col01#6&cbf17ba&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VID_04F3&PID_24A1&REV_1111&Col01', 'provider': 'usb'}
DEBUG - hwPortUtils.listHidDevices (12:01:01.576):
{'devicePath': u'\\?\hid#intc816&col01#3&36a7043c&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd', 'hardwareID': u'HID\INTC816&Col01', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.576):
{'devicePath': u'\\?\hid#intc816&col11#3&36a7043c&0&0010#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col11', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.576):
{'usbID': u'VID_04F3&PID_24A1', 'devicePath': u'\\?\hid#vid_04f3&pid_24a1&col02#6&cbf17ba&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VID_04F3&PID_24A1&REV_1111&Col02', 'provider': 'usb'}
DEBUG - hwPortUtils.listHidDevices (12:01:01.576):
{'devicePath': u'\\?\hid#intc816&col10#3&36a7043c&0&000f#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col10', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.576):
{'devicePath': u'\\?\hid#intc816&col12#3&36a7043c&0&0011#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col12', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.576):
{'devicePath': u'\\?\hid#converteddevice&col02#5&7674e02&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\ConvertedDevice&Col02', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.576):
{'devicePath': u'\\?\hid#converteddevice&col01#5&7674e02&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}\kbd', 'hardwareID': u'HID\ConvertedDevice&Col01', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.576):
{'devicePath': u'\\?\hid#intc816&col0b#3&36a7043c&0&000a#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0B', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.576):
{'devicePath': u'\\?\hid#intc816&col0c#3&36a7043c&0&000b#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0C', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.576):
{'usbID': u'VID_04F3&PID_24A1', 'devicePath': u'\\?\hid#vid_04f3&pid_24a1&col03#6&cbf17ba&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\VID_04F3&PID_24A1&REV_1111&Col03', 'provider': 'usb'}
DEBUG - hwPortUtils.listHidDevices (12:01:01.576):
{'devicePath': u'\\?\hid#intc816&col0d#3&36a7043c&0&000c#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0D', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.576):
{'devicePath': u'\\?\hid#converteddevice&col03#5&7674e02&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\ConvertedDevice&Col03', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.576):
{'devicePath': u'\\?\hid#intc816&col0e#3&36a7043c&0&000d#{4d1e55b2-f16f-11cf-88cb-001111000030}', 'hardwareID': u'HID\INTC816&Col0E', 'provider': None}
DEBUG - hwPortUtils.listHidDevices (12:01:01.576):
Finished listing HID devices
DEBUG - hwPortUtils.listComPorts (12:01:01.582):
{'friendlyName': u'Standardm\xe4\xdfgige Seriell-\xfcber-Bluetooth-Verbindung (COM3)', 'bluetoothName': u'Focus 40 BT 22E86182', 'hardwareID': u'BTHENUM\{00001101-0000-1000-8000-00805f9b34fb}_LOCALMFG&001d', 'bluetoothAddress': 194137402401154L, 'port': u'COM3'}
DEBUG - hwPortUtils.listComPorts (12:01:01.582):
{'friendlyName': u'Standardm\xe4\xdfgige Seriell-\xfcber-Bluetooth-Verbindung (COM4)', 'hardwareID': u'BTHENUM\{00001101-0000-1000-8000-00805f9b34fb}_LOCALMFG&0000', 'bluetoothAddress': 0, 'port': u'COM4'}
DEBUG - hwPortUtils.listComPorts (12:01:01.582):
Finished listing com ports
DEBUG - braille.BrailleHandler.setDisplayByName (12:01:01.582):
Possibly detected display 'Freedom Scientific Focus- / PAC-Mate-Serien'
DEBUG - hwIo.Serial.init (12:01:01.582):
Opening port COM3
IO - inputCore.InputManager.executeGesture (12:01:06.015):
Input: kb(laptop):upArrow
IO - speech.speak (12:01:06.153):
Speaking [u'Eingabefeld-Ende', u'Navigation-Sprungmarke ', u'Tab Ausgew\xe4hlt', u'Write', u' ', u'Tab', u'Preview']
DEBUG - hwIo.Serial.init (12:01:06.763):
Open failed: could not open port u'COM3': WindowsError(121, 'Das Zeitlimit f\xfcr die Semaphore wurde erreicht.')
DEBUGWARNING - brailleDisplayDrivers.freedomScientific.BrailleDisplayDriver.init (12:01:06.763):
Traceback (most recent call last):
File "brailleDisplayDrivers\freedomScientific.pyc", line 132, in init
File "hwIo.pyc", line 170, in init
File "serial\serialwin32.pyc", line 38, in init
File "serial\serialutil.pyc", line 282, in init
File "serial\serialwin32.pyc", line 66, in open
SerialException: could not open port u'COM3': WindowsError(121, 'Das Zeitlimit f\xfcr die Semaphore wurde erreicht.')
DEBUGWARNING - braille.BrailleHandler.setDisplayByName (12:01:06.773):
Couldn't initialize display driver for kwargs {'port': DeviceMatch(type='serial', id=u'Focus 40 BT 22E86182', port=u'COM3', deviceInfo={'friendlyName': u'Standardm\xe4\xdfgige Seriell-\xfcber-Bluetooth-Verbindung (COM3)', 'bluetoothName': u'Focus 40 BT 22E86182', 'hardwareID': u'BTHENUM\{00001101-0000-1000-8000-00805f9b34fb}_LOCALMFG&001d', 'bluetoothAddress': 194137402401154L, 'port': u'COM3'})}
Traceback (most recent call last):
File "braille.pyc", line 1661, in setDisplayByName
File "brailleDisplayDrivers\freedomScientific.pyc", line 152, in init
RuntimeError: No Freedom Scientific display found
DEBUG - braille.BrailleHandler.setDisplayByName (12:01:06.773):
Reinitializing noBraille braille display
INFO - braille.BrailleHandler.setDisplayByName (12:01:06.773):
Loaded braille display driver noBraille, current display has 0 cells.

From the whole log, which is about 1 MB from just 3 minutes of testing, it looks like 2 out of 3 times, the connection is made via Bluetooth if the PC is paired, and only once per USB, and that only if I initialize the driver from the Braille Settings, choosing Auto. All other times it seems to prefer Bluetooth.

Let me know if you want the whole log, I'll send it to you via e-mail, then, don't want to put that whole thing up here on Github.

@bramd
Copy link
Contributor Author

bramd commented Oct 14, 2018

@MarcoZehe I was doing some tests with an older Focus Blue display today.

When I disconnect the USB cable from this display, it turns off, when I reconnect the cable it turns on and immediately establishes a USB connection. Is this not the case for your newer display?

Another interesting observation with this display is that it switches to a USB connection as soon as the cable is plugged in, even if you're having an active Bluetooth connection. It seems the Freedom Scientific driver detects this and switches to USB as well. I improved braille auto detection to keep scanning for compatible USB devices for the current driver, even if there is a Bluetooth connection. So with the following build you can connect a Focus on Bluetooth, plug in USB and it will switch immediately and automatically to USB: https://ci.appveyor.com/api/buildjobs/qqr2tq2m3ncljmfy/artifacts/output%2Fnvda_snapshot_pr1234-6%2C2194af16.exe

I opened a new issue for faster detection of USB device disconnects. I don't want to hold the driver until that's implemented and tested with all kinds of displays, so I think it is best handled in a separate issue/patch.

@MarcoZehe
Copy link
Contributor

When I disconnect the USB cable from this display, it turns off, when I reconnect the cable it turns on and immediately establishes a USB connection. Is this not the case for your newer display?

It is now with the new try build you just sent. It definitely wasn't the case with the older build from end of September. The newer display takes slightly longer to boot, that is, the time display (new to the newer displays) and the battery status appear a bit later after connecting the cable than with the older displays. We're talking about half to 1 second more.

Another interesting observation with this display is that it switches to a USB connection as soon as the cable is plugged in, even if you're having an active Bluetooth connection. It seems the Freedom Scientific driver detects this and switches to USB as well. I improved braille auto detection to keep scanning for compatible USB devices for the current driver, even if there is a Bluetooth connection. So with the following build you can connect a Focus on Bluetooth, plug in USB and it will switch immediately and automatically to USB: https://ci.appveyor.com/api/buildjobs/qqr2tq2m3ncljmfy/artifacts/output%2Fnvda_snapshot_pr1234-6%2C2194af16.exe

Yes, this works fine with my display as well.

I opened a new issue for faster detection of USB device disconnects. I don't want to hold the driver until that's implemented and tested with all kinds of displays, so I think it is best handled in a separate issue/patch.

Sounds good.

@bramd
Copy link
Contributor Author

bramd commented Oct 15, 2018

@MarcoZehe Thanks for the feedback. Do you feel this driver still has any regressions from the old one that should be solved before including it in NVDA?

I also read in the documentation that the new generation has a menu button between the braille keys. Is this button only for internal functions, or can it be used in screen readers? If so, can you send me a debug log of a key press/release of this button?

@MarcoZehe
Copy link
Contributor

MarcoZehe commented Oct 15, 2018 via email

@lukaszgo1
Copy link
Contributor

@bramd One thing missing from the old driver are the new assignments for the Windows+tab and Alt+Shift+tab added in 2018.3. Adding them should be trivial, so maybe worth doing it before opening a pr.

@bramd
Copy link
Contributor Author

bramd commented Oct 15, 2018

@lukaszgo1 Sure, I'll add those.

@valiant8086
Copy link

valiant8086 commented Oct 16, 2018 via email

@nvaccessAuto nvaccessAuto modified the milestone: 2019.2 May 21, 2019
feerrenrut pushed a commit that referenced this issue May 21, 2019
Braille output and wizWheels are working. Tested on a Focus 40 blue

Freedom Scientific braille displays are now supported by braille display auto detection (#7727)
When an auto detected braille display is connected via Bluetooth, NVDA will keep searching for USB displays supported by the same driver and switch to a USB connection if it becomes available

The bumper keys now work correctly on Freedom Scientific braille displays (#8849)

Co-Authored-By: Leonard de Ruijter <leonardder@users.noreply.github.com>

fixes #7727
fixes #4464
fixes #8849
fixes #8729
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

10 participants