NVDA stops responding to key presses from my BT Speak Braille terminal, is this a bug in NVDA's HID Braille implementation, or what else could be causing this? #18874
Replies: 1 comment 1 reply
-
|
Also, there were no errors in the NVDA log. |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
I am working on a Braille terminal application for the BT Speak, to allow it to control other devices. To do this, I am writing a Braille HID device implementation, using the Linux USB gadget framework and the built-in HID gadget. The way this works is after I create a HID gadget after passing an HID descriptor and some other parameters, I can send and receive HID reports on /dev/hidg0 and the Linux kernel is supposed to handle the rest like sending reports on the right channel and in response to GetReport requests. I have gotten it mostly working, where NVDA sees the BT Speak as a 20 cell HID Braille display (I had to include Braille output for NVDA to recognize it), and when I press keys on the BT Speak keyboard NVDA speaks them and types letters. However, when a contracted Braille input table is set, after pressing space NVDA stops responding to keys no matter what keys I press after, even if I restart NVDA. However, disconnecting the USB cable and reconnecting it fixes it without restarting NVDA or my program. Key combinations work as well, and when I press space or enter it does insert a space or return character. I also tested it with JAWS, and this issue does not occur; I was able to type in Braille and perform chord commands without issues. When I tested it with MacOS, all keys worked and VoiceOver never stopped responding to keys, but there was usually a delay of up to 10 seconds before VoiceOver recognized the key presses. How should I go about debugging this? Is this an issue with the Linux USB gadget driver, with NVDA, or something I can fix?
I have attached my HID descriptor (both in binary and text format as parsed by hidrdd), and I have tested my program by printing out the reports it sends to /dev/hidg0 and the bit for each key is being set in the report when sent and unset when released, and a new report is sent with each key event. Here is my HID library for reading and writing reports and descriptors, and here is my Braille terminal program.
hid-descriptor.txt
hid-descriptor-binary.txt
Beta Was this translation helpful? Give feedback.
All reactions