-
-
Notifications
You must be signed in to change notification settings - Fork 631
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
Braille Display Driver for the BrailleNote family of products #2012
Comments
Attachment brailleNote.py added by ragb on 2011-12-27 21:13 |
Comment 1 by jteh on 2011-12-28 22:59 |
Comment 2 by ragb (in reply to comment 1) on 2011-12-28 23:24
For now I'm checking all COM ports (name.startswith("COM")) and prob for the status tag on the braillenote. If the device answers with what is expected accordint to the protocol I consider that it is a braillenote. Obviously this is not a perfect solution. Asking the user to choose the COM port can be an option (config file? GUI?) but has you say it his too much technical. And it has another problem: using USB to serial converters the COM pport number can change when you plug and unplug the converter device. Although I truly understand your point, I think that not supporting serial communications can prevent the usage of some old braille displays with NVDA. Many libraries and schools here in Portugal have displays of this kind (not the braillenote but others from thiemen and other brands). BRLTTY is an option but it is not user friendly though. |
Comment 3 by ragb (in reply to comment 2) on 2012-01-02 13:23
More on this issue: on the dev list some user wanted to connect a baum display using rs232 (or an usb to serial converter). http://lists.nvaccess.org/pipermail/nvda-dev/2012-January/023133.html My personal opinion is that it is better to have same way to configurre serial ports than making impossible the usage of serial braille displays. My suggestion would be something like per-braliedisplay additional settings lie we have for speech. Do you think it is worth a new ticket? |
Comment 4 by jteh on 2012-01-02 22:17 BRLTTY isn't user friendly, but nor is finding and configuring serial ports. This is why I don't see BRLTTY as a problematic option for serial displays. Both require extra knowledge and configuration. |
Comment 5 by ragb on 2012-11-03 12:02 Adding blocking information ad reassigning to me 8since I have a device here to text with). |
Comment 6 by nvdakor on 2012-11-03 17:05
|
Comment 7 by jteh (in reply to comment 6) on 2012-11-05 00:07
I don't follow. The driver can just probe with different serial settings. Surely, each model of display has predefined serial settings?
That should already happen. However, if there's a predefined bluetooth name pattern for each model of device, we can auto-scan based on this name. |
Comment 8 by ragb (in reply to comment 7) on 2012-11-05 11:39
I don't follow either. The current driver only supports classic braillenote devices, which have predefined baudrate and parity settings (38000bps, odd parity and 1 stop bit, if I remember correctly). Moreover, I don't know of any display that can be configured to use different serial port settings... However we probbly are talking about different problems.
That's what we do already. Some people already pointed out that some devices (mainly notetakers) might have different ames, but I don't know about serious complains for this or specific examples. But I think this is out of scope of this ticket. |
Comment 9 by nvdakor on 2012-11-25 10:18
|
Comment 10 by jteh (in reply to comment 9) on 2012-11-25 10:27
As you note below, as long as the user can't remove the "Apex" prefix, we'll be fine. If they can, we won't be able to do automatic Bluetooth detection.
So there is no built-in name prefix that doesn't change? |
Comment 11 by nvdakor on 2012-11-25 10:54
Changes: |
Comment 12 by jteh on 2012-11-25 11:01 |
Comment 13 by nvdakor on 2012-11-25 11:06 |
Comment 14 by ragb (in reply to comment 13) on 2012-11-25 12:52
If you have access to keysoft developers, you may ask a more important question: does the pk, mpower and apex, use the same communication protocol as the classic units? Moreover, if they support US communication, we may ned to know evice hardware and such so we know where to connect. The only reason this driver only supports the classic braillenotes is that I only have access to to on e of those (and, untill June, it was the only display available to me). |
Comment 15 by nvdakor on 2012-11-25 13:04 |
Comment 16 by jteh on 2012-11-25 21:32 |
Comment 17 by ragb on 2012-11-26 04:19 Looking at the braillenote protocol and the message from HW developer, I can tell the following:
Rui Batista |
Comment 18 by nvdakor on 2012-11-26 19:52 |
Comment 19 by nvdakor on 2012-11-26 19:53
|
Comment 20 by ragb (in reply to comment 19) on 2012-11-26 22:01
I can't implement support for this. Are you able to test the |
Comment 21 by nvdakor on 2012-11-27 01:21 |
Comment 22 by ragb (in reply to comment 21) on 2012-11-27 12:27
Ok. Please update your branch. In change set:braillePorts:5606 I added untested support for automatic bluetooth port detection. Please see if it works. If not please attach the log. |
Comment 23 by nvdakor on 2012-11-27 22:32 |
Comment 24 by jteh (in reply to comment 23) on 2012-11-27 23:37
That suggests automatic Bluetooth detection failed. It's slightly possible you have a non-Microsoft Bluetooth stack, in which case this isn't a problem with the new code. |
Comment 25 by jteh on 2012-11-28 04:42 |
Comment 26 by jteh on 2012-11-28 05:09 |
Comment 27 by nvdakor (in reply to comment 26) on 2012-11-28 05:29 Try "APEX" (all caps). In either case, I think we should let users choose com port. Also, if you don't mind, I'd like to attach a txt file containing proposed gestures for BN under NVDA (with provisions for QT commands to be implemented later; well, let's focus on BT). |
Comment 28 by ragb (in reply to comment 27) on 2012-11-28 14:09
Ok, change. Please test and see if the automatic port option is shown. I agree users should choose comport, since they may want to change their device's name for some reason and there is no reason for we to filter out bluetooth serial ports, since choice is explicit. Btw, if you connect your APEX using USB, does it apear ann aditional comport on the list?
Please do. Probably we will merge this into main soon so they may test it easily. |
Comment 29 by ragb on 2012-11-28 16:56 Probabl it make no sence to document the current braille commands (which are too many, in my opinion) and change them next. So I'd say we can reduced them and change them (using always chordds to account for #808). Regards, Rui Batista |
Comment 30 by nvdakor on 2012-11-28 18:59 |
Comment 31 by ragb (in reply to comment 30) on 2012-11-28 19:11
It would be nice if you can give here the output of the code I sent on a previous comment, so we can be sure of the data do implement automatic port detection. |
Comment 32 by nvdakor on 2012-11-28 19:59 Thanks. |
Attachment BN commands under NVDA.txt added by nvdakor on 2012-11-28 20:09 |
Comment 33 by ragb on 2012-11-29 17:36 On another note: I'll implement a basic set of commands for the driver to be merged (and write the manual entry) and then we can discuce more commands and implement apex / pk / qwerty (is qwerty needed?) later, per haps in #808 to unify chords. An alternative would be to merge #426 and leave this driver out, so we can continue it's development on a separate branch and don't have to write the manual entry for the braillenote and later modify it. |
Comment 34 by jteh on 2012-11-29 21:29 Rui, see the code I wrote relating to USB_IDS in the baum driver. The hardware ID is formatted a bit differently, but the concept is the same. Start with a USB_IDS set with |
Comment 35 by nvdakor on 2012-11-30 07:37 |
Comment 36 by ragb (in reply to comment 35) on 2012-11-30 10:11
I'll ask humanware. Meanwhile we will start with your id, if there are more we can add them easily.
As far as I know PK uses the braillenote protocol. It uses keysoft and so on. Pronto is the same hardware but I believe the software is differente. Regards, Rui Batista
|
Comment 37 by ragb on 2012-11-30 12:11 I added support for USB connection to the Apex. Please try it and tell me if the USB option apears. Please tell me also if bluetooth and automatic options apear and work. |
Comment 38 by nvdakor on 2012-11-30 23:57 |
Comment 39 by jteh on 2012-12-01 00:11 |
Comment 40 by ragb (in reply to comment 38) on 2012-12-02 16:42
I can't find the bug that is causing no detection. I'm trying to find vid and pid by humanware, which of cuorse match your device. Does anyone as any ideas?. Regarding bluetooth, Humanware sent me the following information:
I'll try implementing it by macaddress. @Jcsthe, do you thin it may work, wven with toxaiba's tack? |
Comment 41 by jteh (in reply to comment 40) on 2012-12-02 21:43
The string is actually
hwPortUtils doesn't know anything about the Toshiba stack at all, so no, it won't work for the Toshiba stack. I need access to a Bluetooth adapter which uses the Toshiba stack to have any chance of working on this, but haven't been able to get hold of one. I suspect it's only used for built-in Bluetooth chips, which makes this even more unlikely. |
Comment 42 by nvdakor on 2012-12-03 06:32 |
Comment 43 by nvdakor on 2012-12-03 07:13 Hi,
2.)
IO - speech.speak (22:37:51):
This was because BN is recognized by Windows 8 as a Windows Mobile device, so had to terminate WMDC sync connection when switching ports.
So it appears that NvDA is using the last known connection port. If it happens to be USB and if the user is using BT or USB cable is not plugged in, NVDA will fail to show a list of detected ports. |
Comment 44 by ragb on 2012-12-03 12:03 Can you test changeset,braillePorts,5615 for the following:
p.s. By mistake I posted this comment on #426. Sorry. |
Comment 45 by nvdakor on 2012-12-03 18:44
From BT to USB:
So the key would be that the user needs to connect/disconnect USB cable during port transition phase. |
Comment 46 by ragb (in reply to comment 45) on 2012-12-03 21:58
Hmm, this is interesting. So there is a setting also on the braillenote to set the type of connection used. This makes me think that, further than automatic, USB and bluetooth options seem a bit redundant, since only one of those can apear at the same time. Which makes me think that we could remove those and simply use automatic. Serial ports must be still there of course, even virtual ones (i.g. bluetooth, usb).
The list of ports is only updated when you enter the settings dialog or change the driver in the braille display combo box.
[...]
No driver supports such a thing I believe. If the braillenote has to restart some of its applications, in particular the terminal, we can't do much about it.... I believe the instructions you provided are general to any screen reader so they are more or less described on the braillenote's documentation.
I believe we can check that when implementing port selection for those displays, if needed at all. |
Comment 47 by jteh (in reply to comment 45) on 2012-12-03 22:03
Are you saying NVDA reports an error even when you have the correct port selected? This would suggest the initial handshake isn't working properly for some reason in this case. |
Comment 48 by ragb on 2012-12-05 16:19 I committed the manual entry for the braillenote and what'new. Regards, Rui Batista |
Comment 49 by nvdakor on 2012-12-05 17:41 |
Comment 50 by jteh on 2012-12-05 21:17 The docstring needs to be updated. Currently, it says:
You define an ACCEPTED_COMMANDS list, but it is never used. Even if it were, it might be better to use a set, as I imagine you intended to use it to test for the presence of an item. _keyNames and _dotNames are constants (rather than private variables), so it might be better to name them KEY_NAMES and DOT_NAMES. However, this one is up to you. This last one is more an observation than anything else. _getUSBPorts and _getBluetoothPorts each call hwPortUtils.listComPorts. This isn't a hugely expensive call, but being pedantic about efficiency, it should probably only be called once. However, I see why you did it this way; putting all of that in one function would make things a lot less readable. |
Comment 51 by ragb (in reply to comment 50) on 2012-12-06 00:39
Thanks, forgot that one.
Not needed at all.
_dotNames is generated at runtime although its value should remain constant... I'll leave it for now, I guess :) .
I believe the efficiency gains would be very tiny. Moreover, with this I can avoid sorting ports on the constructor (and evaluate all the generator) when selecting automatic, so USB comes first. |
Comment 52 by jteh on 2012-12-07 11:06 |
Reported by on 2011-12-26 19:42
Braillenote is a wellknown notetaker from Pulsedata, now humanwhare that supports a braille terminal mode.
There are models with 18 and 32 cells and with braille and qwerty keyboards. There are many generations of the braillenote (classic, mPower, Apex and maybe more). I have only access to a Braillenote bt 32, that is, the classic model with 32 cells and a braille keyboard. The device communicates through the serial port. newer models have USB ports too but I didn't find any information about protocol changes and such. The only description is found in BRLTTY source package for the serial protocol used by the brailleNote classic bt. Maybe newer models work with the same protocol but I'm not sure... Also no idea about what keys the qwerty keyboard units return.
BrailleNote website: http://www.humanware.com/en-usa/products/blindness/braillenotes
The braillenote implementation of its own protocol have some bugs, one is that when pressing dot7 or dot8 the unit reports that was pressed space+dot7 or space+dot8. Moreover many key combinations are intersepted by the unit and are not sent to the computer.
The attached driver works very well with my Braillenote unit. Cursor routing keys and thumb keys are mapped to NVDA functions as close as possible to the braillenote ones. Braille keyboard keys are mapped to keyboard key presses simulating many navigation tasks: arrows, pageup up and down, end, home, tab, shift tab, showGui and such. pressing H activates and deactivates keyboard help and default combinations can be tested.
Keynames used are the following:
Gesture.ini changes work with these names.
More testing is needed I think. However I supose it is stable to be included in snapshots for testing purposes, if you think this is to be included in NVDA main distribution. If there is a serial communications error the driver stops communicating so NVDA is not flooded with errors. Tested with main-4852.
Hope this helps someone.
Comments and sugestions are wellcome.
Rui Batista
Blocked by #426
Blocking #2857
The text was updated successfully, but these errors were encountered: