-
-
Notifications
You must be signed in to change notification settings - Fork 643
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
add support for sending speech over remote desktop protocol channels #3564
Comments
Comment 2 by camlorn on 2013-10-13 18:19 |
Comment 4 by nvdakor on 2014-04-19 08:48 |
Comment 5 by jteh on 2014-04-19 08:58 Braille is quite a bit harder than speech because you need to handle input from the client as well (not just pushing output from the server), but every braille display has different input bindings, which doesn't work well for the "virtual" display on the remote side. |
Comment 6 by nvdakor on 2014-04-20 04:30 |
Comment 7 by nvdakor on 2014-04-26 04:17 |
Comment 8 by nvdakor on 2014-04-26 06:35
|
Comment 9 by nvdakor on 2014-04-26 13:34 |
Comment 10 by nvdakor on 2014-04-27 09:15 |
Comment 11 by nvdakor on 2014-06-17 12:46 |
Comment 12 by nvdaksh (in reply to comment description) on 2014-07-11 19:29
|
Comment 13 by nvdakor (in reply to comment 12) on 2014-07-11 19:46
Hi, |
Comment 14 by Brendon22 on 2014-07-12 07:56 Don't forget about the MS Window Eyes offer. As far as I am aware with this offer, you get remote access for free. But yes, if you by a license of Window Eyes it is not free. Thank you. |
Comment 15 by camlorn on 2014-07-14 18:30 |
Comment 16 by ragb (in reply to comment 15) on 2014-07-14 22:30
I agree. Moreover, using virtual channels or whatever, people are asking for every single feature before anything is done, even a simple dummy channel between two NVDA instances. I'd say that remote speech would solve 90% of all current use cases, and that one is a good start. Regarding implementation, I'd go for dynamic virtual channels as Jamie proposed. My only concern is how we can register a terminal services plugin so that it can communicate with NVDA. If it is possible to directly expose a COM server from NVDA implementing the ON the server side (NVDA running in a remote session) things seem easier since one can find if it in a remote session and act appropriately. Just need to implement a remote speech driver and use that to write commands ove dynamic virtual channel. I'm really still not concerned about the data protocol used, it is a matter of deciding something flexible or using some existing binary format (protobuf, etc.) |
Comment 17 by jteh on 2014-07-15 01:09 For dynamic virtual channels, I doubt you could have the client COM server in NVDA itself, as it probably needs to be an in-process COM server, which means it has to be a dll. I could be wrong, though. |
Comment 18 by ragb (in reply to comment 17) on 2014-07-16 13:41
Ah, ok. Dynamic virtual channels have all the COM baggage associated :). I'm not sure, but for our use case static channels might be enough, and one can use the already existing DLL infrastructure to export the needed functions for the remote desktop services client dll plugin.
Don't know that much about the subject. In http://starship.python.net/crew/theller/comtypes/server.html You can find a COM server written in Python but probably doesn't apply to our situation. BTW, I guess it would be harder to implement this as an add-on than modifying core.... |
Comment 19 by mdcurran (in reply to comment description) on 2014-07-17 05:20 The question is: What would be the most important implementation for NV Access to work on? camlorn: You said your University has remote solutions. But do they use Microsoft Remote Desktop (Windows Terminal Services), or do they use Citrix? We really need to hear from NVDA users as to technical requirements for this. |
Comment 20 by ragb (in reply to comment 19) on 2014-07-17 11:59
At least here, all people I contacted about this are using windows terminal services (microsoft) or trying too do that by routing also audio and such. I'd say if we abstract the transport protocol as much as possible, that is, use RDP virtual channels or whatever just to pass data around, we may be able to accommodate different solutions. Anyway, I've being thinking about this for windows terminal services/static virtual channels, and it does't seem as complex as it seemed, in implementation details. For the server application module, I believe we can open, read and write to a virtual channel directly from Python using types, which is more or less comfortable :). on the client side, we must implement a dll to run on the mstsc process. This should communicate received data and other events to NVDA, and allow for NVDA to send data to the remote client and probably control some other aspects. Correct me if I'm wrong, but I think the RPC infrastructure used in |
Comment 21 by nvdakor (in reply to comment 20) on 2014-07-17 12:11
Right. The hardest is that the client DLL must be registered in the system, which limits its use to installed copies (see my comment above).
|
Comment 22 by ragb (in reply to comment 21) on 2014-07-17 13:23
This is the same as add-on extension registration. One can try to temporely register the dll or whatever, but if we don't have privileges it's impossible. Anyway, if we really need an installed copy, this should not block the implementation that much. In the end this is a very specific feature.
I think this two questions are somehow the same. I didn't thought much about this, but I believe we will need to account for various remote NVDA instances to communicate with the same client. Moreover I don't know if there are any restrictions for remote apps in UAC contexts, e.g. be restricted in virtual channel usage or something.
If we can pass data around we can build all the rest over it, in a much higher abstraction level. Say speech or whatever. As per MSDN documentation, the code in the plugin doesn't account for some specific remote sessions in windows 8 and above, we will need some registry checks and so on, but there are clear code samples for that. I found some c++ code that might be of use here: http://www.codeproject.com/Articles/87875/User-Mode-Transport-of-the-Library-Via-Virtual-Cha At least gives some idea how to use the windows API calls in context.
As I will surely need this in a future job, I'm trying to help what I can, but any more help is appreciated, as always :). |
Comment 23 by camlorn on 2014-07-17 18:09 |
Comment 24 by k_kolev1985 on 2014-07-17 19:31 Since you want input from other NVDA users about the usage cases for this feature (if I understood correctly), I'll tell you mine, based on my own experience and observations. For the beginning, NVDA should be able to control another NVDA copy and another computer via an established connection. It should be able to send speech and braille feedback from the controlled machine to the controlling one. The speech should be send as text and read aloud or shown on a braille display. The settings used for speech and other NVDA stuff should be from the controlling copy of NVDA and not taken from the controlled one. My idea is to be able, if needs be, to help people like us, who have computer problems: we log on in their machine via an established connection and start controlling it; the things read by the controlled copy of NVDA are send to the controlling copy of NVDA and it speaks it or shows it on braille (or maybe both, if desired). I'm asking for this, because in most cases, less experienced blind computer users have problems with their machine and software and don't know how to solve them and need help from somebody else. I personally have been helping such people, but it wasn't easy. The controlling was done via TeamViewer and the speech audio from the controlled copy of NVDA was transfered via a Skype call to me. But that solution is far from best and one of its smallest problems is the inevitable audio latency. And speaking of TeamViewer, I've thought of 2 more feature suggestions: sending not only speech and braille, but video as well from the controlled to the controlling machine, for partially sighted users like me, who help, but use a screen reader also; Voice and text/chat communication, in order for the people on both sides to be able to communicate with each other if needs be, without needing to rely on other VoIP programs for that. For the 2nd one: yes, I know there's Skype for that, but what if the person's problem is that he can't use Skype for some reason and wants help from us just for that (?). Well, those are my 2 cents on the matter :). Thanks for reading! |
Comment 25 by ragb (in reply to comment 23) on 2014-07-18 11:58
I agree with this. However, as nice as it may seem, we should not try to account for every sort of possibility, that is, abstract too much. I'm saying this because I myself sometimes tend to try to solve everything early on and then things get too much complex with no need.
I thought about a binary-based format due to the amounts of data we need to pass plus the need to have the less latency possible. I believe Json and specially XML have some overhead. But this is just a guess, in practice I don't know if it would be noticeable or not. Protobuf was just the first thing that came to mind. |
Comment 26 by ragb on 2014-07-19 11:57 When we send say speech from the remote NVDA to the client, where should we pre-process that speech with dictionaries and so on? I'd say on the client side, since we want to use client settings (I guess). This makes the implementation a bit trickier though, as one can't just rely or can't rely at all in a remote speech synth driver. |
Comment 27 by ragb on 2014-07-19 16:42 https://bitbucket.org/ragb/nvda See branch T3564. I coded the stub for the client DLL plugin to be called by remote desktop. I decided to create a standalone DLL with this functionality, I don't think it is correct or even suitable to use nvdaHelperRemote for this. My plan is to implement another interface in NVDA helper (call it |
Comment 28 by manish on 2014-09-07 01:39 |
Comment 29 by blindbhavya on 2014-09-07 08:10 |
Comment 31 by nvdakor on 2014-09-07 11:06 |
Comment 32 by blindbhavya on 2014-09-07 12:19 |
Comment 33 by nvdakor on 2014-09-07 12:53 |
@jcsteh commented on 10 aug. 2017 02:13 CEST:
Honestly, it is quite a long time ago I tested this, so I don't recall. Implementing this using comtypes isn't the way to go anyway, since you will have to implement com interfaces by hand, whereas there are perfect c++ headers for this. For the server side of things, hwIo would be a good starting point |
Hello everyone! |
Hi, these are two completely different things: the issue at hand is Remote Desktop Protocol, which is way different in practice than Remote Support add-on. Thanks.
From: florianionascu7 <[email protected]>
Sent: Sunday, September 16, 2018 11:26 AM
To: nvaccess/nvda <[email protected]>
Cc: Joseph Lee <[email protected]>; Mention <[email protected]>
Subject: Re: [nvaccess/nvda] add support for sending speech over remote desktop protocol channels (#3564)
Hello everyone!
As we know, the current version of NVDA Remote is incompatible with
NVDA. As I've heard, a new with version of this add-on will be
available once NVDA 2018.3 is released. In order to avoid this kind of
issues in the future, I suggest you to include this add-on in NVDA.
This suggestion comes from the entire Romanian community of NVDA. I,
like all members in the Romanian community, think that it would be a
great thing that NV Access can doMaybe it's hard to do, but it's very
useful for NVDA users.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub <#3564 (comment)> , or mute the thread <https://github.com/notifications/unsubscribe-auth/AHgLkHPdqkCIBIIW772_fGTkkUZT_Bxyks5ubpfDgaJpZM4J5qwL> .
|
Oh, my apologies for the mistake.
La 16.09.2018 21:29, Joseph Lee a scris:
Hi, these are two completely different things: the issue at hand is Remote Desktop Protocol, which is way different in practice than Remote Support add-on. Thanks.
From: florianionascu7 <[email protected]><mailto:[email protected]>
Sent: Sunday, September 16, 2018 11:26 AM
To: nvaccess/nvda <[email protected]><mailto:[email protected]>
Cc: Joseph Lee <[email protected]><mailto:[email protected]>; Mention <[email protected]><mailto:[email protected]>
Subject: Re: [nvaccess/nvda] add support for sending speech over remote desktop protocol channels (#3564)
Hello everyone!
As we know, the current version of NVDA Remote is incompatible with
NVDA. As I've heard, a new with version of this add-on will be
available once NVDA 2018.3 is released. In order to avoid this kind of
issues in the future, I suggest you to include this add-on in NVDA.
This suggestion comes from the entire Romanian community of NVDA. I,
like all members in the Romanian community, think that it would be a
great thing that NV Access can doMaybe it's hard to do, but it's very
useful for NVDA users.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub <#3564 (comment)><https://github.com/nvaccess/nvda/issues/3564#issuecomment-421808629> , or mute the thread <https://github.com/notifications/unsubscribe-auth/AHgLkHPdqkCIBIIW772_fGTkkUZT_Bxyks5ubpfDgaJpZM4J5qwL><https://github.com/notifications/unsubscribe-auth/AHgLkHPdqkCIBIIW772_fGTkkUZT_Bxyks5ubpfDgaJpZM4J5qwL> .
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub<#3564 (comment)>, or mute the thread<https://github.com/notifications/unsubscribe-auth/ATbjMhV6urhcSViNJZHypIer_3qhu1Hsks5ubpiJgaJpZM4J5qwL>.
|
Replying to @michaelDCurran
There is also basic RDP suport in Citrix, see In my opinnion here is not a question of costs. Because I think if we start a specific campaign there will be thousants of donations related to this functionality and it might be enough to implement both RDP and ICA. The problem is here manpower. This would be a project where many developers have to work together. It needs communication with Microsoft and Citrix, maybe separated, to find the best way to implement both protocols. There are thousants of users who are dealing with this at work. In terms of priority, RDP and ICA are both on same level. Citrix is being used in almost every bank and almost every state owned company where data must be centralized. RDP and VM-Ware are mostly used in document management areas and system administration domains. So, the question is rather, is NV Access willing to start such a worldwide specific campaign for this purpose and start getting donations and sponsoring? I think NV Access could coordinate this project but I honnestly don't think that NV Access alone will be able to do all work alone. But a campaign started by the creators of NVDA is much credible than a campaign started by a users group or a motivated NVDA Team from a certain country. |
I see this discussion is going on almost in every community and every year on NVDACon it is also a topic which is being debated. So we have to start anywhere because it affects really lots of people. |
For now of course, people in these employment situations can have their
employer purchase Unicorn:
https://access4u.eu/product/unicorndvc/?dealer=c81e728d9d4c2f636f067f89cc14862c
This product extends NVDARemote to access these remote desktop protocols
(RDP, Citrix, Vmware Horizon) , including support for jump servers.
|
Ah thank you very much for this link. I think @LeonarddeR presented this on Sight City this year as well. Right?
I think this should become more popular in general. If basic remote support comes to NVDA’s core, then some words about unicorn should definitely be also included in the user guide. At least Citrix could also add this to their accessibility corner. They are only talking about jaws and Window eyes and Super Nova.
Se e.g.
https://www.citrix.com/content/dam/citrix/en_us/documents/support/using-common-accessibility-and-adaptability-software-with-citrix-xenapp.pdf
and
https://citrixready.citrix.com/dolphin-computer-access-ltd/supernova-magnifier.html
Best
Adriani
Von: Michael Curran <[email protected]>
Gesendet: Donnerstag, 13. Dezember 2018 23:17
An: nvaccess/nvda <[email protected]>
Cc: Adriani90 <[email protected]>; Comment <[email protected]>
Betreff: Re: [nvaccess/nvda] add support for sending speech over remote desktop protocol channels (#3564)
For now of course, people in these employment situations can have their
employer purchase Unicorn:
<https://access4u.eu/product/unicorndvc/?dealer=c81e728d9d4c2f636f067f89cc14862c> https://access4u.eu/product/unicorndvc/?dealer=c81e728d9d4c2f636f067f89cc14862c
This product extends NVDARemote to access these remote desktop protocols
(RDP, Citrix, Vmware Horizon) , including support for jump servers.
—
You are receiving this because you commented.
Reply to this email directly, <#3564 (comment)> view it on GitHub, or <https://github.com/notifications/unsubscribe-auth/Aaon8f6NeIdqWoSOTnraICsMttAJL5XNks5u4tHGgaJpZM4J5qwL> mute the thread. <https://github.com/notifications/beacon/Aaon8Qg5BZjIj6S-FSd39EP0Pgll5cnRks5u4tHGgaJpZM4J5qwL.gif>
|
I would be more than happy to contribute towards development costs for this; I'm finding that more and more employers are relying on access to multiple terminal servers, and to have at least RDP functionality integrated into NVDA's core would be a huge starting point. |
I'm currently building an open source solution for this as Unicorn is a paid product and lacks several essential features, particularly the possibility to operate multiple remote sessions at the same time. |
…14531) Related to #3564, #2315 Summary of the issue: Currently, USB and Bluetooth devices are supported for braille display detection. Other devices using other protocols or software devices aren't supported. This pr intends to add support for this. Description of user facing changes None. User shouldn't experience anything different for now. Description of development approach Added Chain, a new extension point type that allows to register handlers that return iterables (mainly generators). Calling iter on the Chain returns a generator that iterates over all the handlers. The braille display detector now relies on a new Chain. By default, functions are registered to the chain that yield usb and bluetooth devices. A custom provider can yield own driver names and device matches that are supported by that particular driver. A potential use case would be implementing automatic detection for displays using BRLTTY, for example. It will also be used to fix Braille does not work on secure Windows screens while normal copy of NVDA is running #2315 (see below) Added a moveToEnd method on HandlerRegistrar, which allows changing the order of registered handlers. This allows add-ons to give priority to their handlers, which is especially helpful for both Chain and Filter. NVDA Remote should come for the braille viewer, otherwise controlling a system with braille viewer on with a 80 cell display connected to the controller would lower the display size to 40 unnecessarily. This will also be used to register a custom handler to bdDetect.scanForDevices to support auto detection of the user display on the secure screen instance of NVDA, which should come before USB and Bluetooth. As a bonus, added type hints to extension points. For Filters and Chains, you could provide the value type and then a type checker can check validity. As another bonus, all features are covered by new tests. So there are tests for the Chain extension point and for the specific use case in bdDetect Testing strategy: As this touches braille display auto detection quite a lot, probably merge this early in the 2023.2 cycle. Known issues with pull request: bdDetect.Detector does no longer take constructor parameters, rather queueBgScan should be called explicitly. This is because if we queue a scan in the constructor of Detector, the detector could switch to a display and disable detection before the _detector was set on the braille handler. Ideally we should use a lock as well, but that might be something as a follow up for both this pr and #14524. Note that though we're changing the constructor of a public class in bdDetect, the doc string of the class explicitly states that the Detector class should be used by the braille module only. That should be enough warning for users not to use this class and therefore I don't consider this API breaking.
Any movement on this issue? Employer is looking to shift our team to using RDP into Windows boxes and wondering if I'm going to have any options. Thanks. |
Sure, RDAccess is now a stable add-on. I have no plans to integrate this in core, especially now there's an add-on store that allows you to install this pretty easily. |
@LeonarddeR Ever see a future where NVDA will just work on a client machine and have no requirement to be installed on the server? I highly doubt our security team approves this. |
That is not technically possible - NVDA has to be running on the server side to know what is happening on it, as the server is a completely separate machine which just sends image to a client.
That is IMHO the biggest disadvantage of keeping the support as an add-on. There will always be companies where employers are not allowed to install add-ons, and they would be forced to use a commercial screen reader to do their job. |
Company is not against installing add-ons, it would be the screen reader in general. These servers run web apps, policy states that only the software required to run the app/service is allowed. Got to love the healthcare world. I have a feeling it would be a long battle to change that. SSH is so much nicer. |
If you're in the U.S., sue over the illegal policy. It likely violates the
Americans with Disabilities Act, and possibly parts of the Rehabilitation act.
|
It may not violate the ADA because the ADA is limited to reasonable accommodations, and if they are in the U.S. in this case they're probably sandwiched between ADA and HIPAA in some fashion. Which one would win? That's a question for lawyers, not this GitHub thread. But I do at least second the general point that there are advantages from a social perspective of having such things in core, because it is much easier to get one piece of software approved than two. |
Reported by camlorn on 2013-10-08 00:52
The remote desktop protocol is Microsoft's protocol for remote access. I believe it is also used by Cytrix, and possibly some of VMWare's products. Regardless, it is used by Microsoft's own implementation which comes with windows. As part of RDP, applications can ask for RDP channels, a method by which they can send arbitrary data back and forth.
Here's some documentation: http://msdn.microsoft.com/en-us/library/windows/desktop/aa383509%28v=vs.85%29.aspx
Anyhow, more and more places are moving to remote-only access. A good chunk of my university does this. A lot of businesses do it. There are threads from time to time on audiogames.net by people who aren't even working in the computer industry needing some sort of remote access solution. RDP is possibly the easiest to add. Currently, one needs to purchase a even more expensive jaws license for the functionality there, and I believe window-eyes is likewise. There is nothing a blind person can point at for this type of situation that doesn't require someone, usually the blind person, paying extra money. Remote access has become a common thing now, and it is my opinion that it is important that NVDA look into adding it soon.
I am almost certain the Jaws implementation uses RDP channels to send speech strings, which is why I mentioned the protocol. Obviously, implementing an NVDA-specific protocol that requires more open ports won't fly with a lot of IT people-the first thing I thought of was just opening a plane text socket to send speech over, but that's pretty easy to hack. RDP can, in some cases, work without any extra setup beyond installing NVDA on the server.
Blocking #3694
The text was updated successfully, but these errors were encountered: