Date   

Re: edit user guide

Chris Smart
 

Yep, I've recently learned more about the ribbons, finally, and honestly my fear of them based on comments I've heard for years was worse than actually learning to find things in them.

I'm not yet comfortable there, but eventually I'll know enough quick keystroke sequences in Word for example, to do things as quickly as I did years ago when the pulldown menus were static.


Speaking of crutches, does anyone else think ResearchIt is for people who can't or won't use Google? (grin)


Re: edit user guide

Quentin Christensen
 

Just to throw my own 2c in here on some of the raised points:

- I agree, and I would say it is our official NV Access policy that the User Guide is primarily for NVDA features (and thus generally only lists NVDA shortcut keys).  As noted, there are some instances where referencing the general Windows keystroke helps in explaining how NVDA works in that situation.  The one instance (aside from braille key mappings) where alt+tab is mentioned in the User Guide is a good example of this in Section 5.2, Navigating with the System Focus: "The most common way of navigating around Windows with NVDA is to simply move the system focus using standard Windows keyboard commands, such as pressing tab and shift+tab to move forward and back between controls, pressing alt to get to the menu bar and then using the arrows to navigate menus, and using alt+tab to move between running applications. As you do this, NVDA will report information about the object with focus, such as its name, type, value, state, description, keyboard shortcut and positional information. When Visual Highlight is enabled, the location of the current system focus is also exposed visually."  Similarly, in the Excel section of the User Guide, we mention the Excel shortcut key of shift+f2, as NVDA overrides the default behaviour of that keystroke to display an accessible interface for editing cell notes.

- When looking for the shortcut keys for Excel (or any other specific program), you should first look to either the user guide, manual or training for that program, or in the case of Office programs like Excel, NV Access also have training material.

A web search for "microsoft excel shortcut keys" or similar, readily finds Microsofts own documentation here: https://support.microsoft.com/en-us/topic/keyboard-shortcuts-in-excel-1798d9d5-842a-42b8-9c99-9b7213f0040f

While the point that it can be difficult to know whether there is a program keystroke or an NVDA keystroke to do something, NV Access' philosophy is that where a program (or Windows) provides an accessible way to do something, we generally won't interfere with that or provide a different way, so I would first check, does Excel have a keystroke to get to the last occupied cell in a column of data?  To use Pranav's example from earlier in the thread.  Certainly CONTROL+ARROWS are useful in many situations - to jump to the start and end of data in Excel, to move by word or paragraph in Word, and so on.  But if we mentioned every possible useful keyboard shortcut, it would make the user guide extremely long, probably regularly out of date as such third party keystrokes changed, and a nightmare for translators.  I used to have a document of "500 Microsoft Word keyboard shortcuts".  I wouldn't like to see all of those included in the User Guide!

Should you have knowledge of Windows before using NVDA?  It's certainly not mandatory, but it depends on how you are learning to use Windows / NVDA.  The User Guide is not designed as a training manual, that is why we wrote the Basic Training for NVDA module.  It doesn't assume prior knowledge of Windows and walks you through from the basics.  The User Guide really is designed as a reference ONLY to NVDA itself.

Quentin.

On Thu, Apr 8, 2021 at 9:48 AM Brian Vogel <britechguy@...> wrote:
On Wed, Apr 7, 2021 at 07:07 PM, Luke Davis wrote:
Worse, as I understand it, sometimes Jaws, et al have created their own versions of Windows shortcut commands, which just muddies the waters.
-
Even though this is not a JAWS group, I'm giving myself a personal dispensation to say this:  The "virtual ribbon" is the worst possible crutch ever foist upon those who are screen reader users.

You need to know how to use the ecosystem as it exists, period, end of sentence.  And when the UI changes, you change.  The fact that we have people whining about the ribbon interface in 2021 makes me want to scream.  It's here to stay, it's just a menu with a slightly different access method, and you (the generic you) had darned well ought to know how to use it without any need for something to make it behave differently than it already does, because it's 100% accessible.

I also hate when people remap Windows keyboard shortcuts except in the rarest of circumstances.  I have seen far too many who've done this forget that they have done this, and what they've done it for, placed in front of a stock Windows system with their screen reader of choice and be unable to do lots of basic things because they have no idea of the native keyboard shortcuts.
--

Brian - Windows 10 Pro, 64-Bit, Version 20H2, Build 19042  

Always remember others may hate you but those who hate you don't win unless you hate them.  And then you destroy yourself.

       ~ Richard M. Nixon

 



--
Quentin Christensen
Training and Support Manager


Re: edit user guide

 

On Wed, Apr 7, 2021 at 07:07 PM, Luke Davis wrote:
Worse, as I understand it, sometimes Jaws, et al have created their own versions of Windows shortcut commands, which just muddies the waters.
-
Even though this is not a JAWS group, I'm giving myself a personal dispensation to say this:  The "virtual ribbon" is the worst possible crutch ever foist upon those who are screen reader users.

You need to know how to use the ecosystem as it exists, period, end of sentence.  And when the UI changes, you change.  The fact that we have people whining about the ribbon interface in 2021 makes me want to scream.  It's here to stay, it's just a menu with a slightly different access method, and you (the generic you) had darned well ought to know how to use it without any need for something to make it behave differently than it already does, because it's 100% accessible.

I also hate when people remap Windows keyboard shortcuts except in the rarest of circumstances.  I have seen far too many who've done this forget that they have done this, and what they've done it for, placed in front of a stock Windows system with their screen reader of choice and be unable to do lots of basic things because they have no idea of the native keyboard shortcuts.
--

Brian - Windows 10 Pro, 64-Bit, Version 20H2, Build 19042  

Always remember others may hate you but those who hate you don't win unless you hate them.  And then you destroy yourself.

       ~ Richard M. Nixon

 


Re: edit user guide

 

On Wed, Apr 7, 2021 at 07:07 PM, Luke Davis wrote:
Why should that [prior Windows experience] be presumed?
-
Because I can count on less than one hand when someone entirely new to Windows suddenly appears on any screen reader venue for the screen readers that are exclusive to Windows.

If there is the odd person who's coming into Windows anew, say having decided to leave the Apple ecosystem, it is incumbent on them to mention this.

I'm willing to bet that were we to post a poll asking something like, "When you were brand new to NVDA, did you have previous experience with Windows (whether with a screen reader or not)?," where the options were Yes/No we'd have very, very, very few "Nos."

And if someone is brand new to Windows, a screen reader group is not the place to be learning the basics of Windows, either.  You really need to have some basic Windows skills before you even try to learn a screen reader "from distance."  It is my opinion, and Nimer can correct me if he is in disagreement, that this group is not now and never has been about teaching basic Windows skills. 

We seem to get way more people who are fleeing JAWS (whatever the reason) than anything else.
--

Brian - Windows 10 Pro, 64-Bit, Version 20H2, Build 19042  

Always remember others may hate you but those who hate you don't win unless you hate them.  And then you destroy yourself.

       ~ Richard M. Nixon

 


Re: edit user guide

Monte Single
 

Well said Luke.

-----Original Message-----
From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Luke Davis
Sent: April 7, 2021 5:08 PM
To: nvda@nvda.groups.io
Subject: Re: [nvda] edit user guide

On Wed, 7 Apr 2021, Brian Vogel wrote:

-And even though this is absolutely true, NVDA documentation should not
focus on Windows commands, either.

I don't disagree, but I am curious about:

But it should be presumed that someone coming to NVDA is and has
already been a Windows user and already knows the keyboard shortcuts used
to do things like cut, copy, paste, save, save as, and the list goes on and
on.

Why should that be presumed?

As I understand it, one of the core intents for NVDA is second or third
world use, where other screen readers are either not available, or are
prohibitively expensive. (Obviously, this does not take into account
Narrator's increasing
capabilities.)

In such circumstances, a blind user likely has no Windows experience at all,
and shouldn't be expected to have it. Additionally, it doesn't seem
reasonable to assume that such users have good access to trainers of any
kind beyond basic installation.

Therefore, what am I missing that makes it logical to expect them to have
prior Windows experience?

It is important, critically important, to be able to separate out "who
controls what," and by that I mean knowing what commands are Windows
commands and work pretty much everywhere under Windows, what are screen
reader commands, and what are commands specific to the application being
accessed.

Absolutely true. In my experience, trainers for Window-eyes and Jaws, have
rarely taught that difference. People I have worked with to try to teach
them to use NVDA, have often been completely ignorant, and surprised by the
fact, that some of the shortcuts they knew were actually Windows commands.
They tend to assume that nothing they already know is applicable, because
they think it is all screen reader commands; and are afraid to try things
because they think it will make something happen that they won't be able to
come back from.
Worse, as I understand it, sometimes Jaws, et al have created their own
versions of Windows shortcut commands, which just muddies the waters.

Luke


Re: edit user guide

Luke Davis
 

On Wed, 7 Apr 2021, Brian Vogel wrote:

-And even though this is absolutely true, NVDA documentation should not focus on Windows commands, either.
I don't disagree, but I am curious about:

But it should be presumed that someone coming to NVDA is and has already been a Windows user and already
knows the keyboard shortcuts used to do things like cut, copy, paste, save, save as, and the list goes on and on.
Why should that be presumed?

As I understand it, one of the core intents for NVDA is second or third world use, where other screen readers are either not available, or are prohibitively expensive. (Obviously, this does not take into account Narrator's increasing capabilities.)

In such circumstances, a blind user likely has no Windows experience at all, and shouldn't be expected to have it. Additionally, it doesn't seem reasonable to assume that such users have good access to trainers of any kind beyond basic installation.

Therefore, what am I missing that makes it logical to expect them to have prior Windows experience?

It is important, critically important, to be able to separate out "who controls what," and by that I mean knowing what commands are Windows commands and work pretty much everywhere under Windows, what are screen reader commands, and what are commands specific to the application being accessed.
Absolutely true. In my experience, trainers for Window-eyes and Jaws, have rarely taught that difference. People I have worked with to try to teach them to use NVDA, have often been completely ignorant, and surprised by the fact, that some of the shortcuts they knew were actually Windows commands. They tend to assume that nothing they already know is applicable, because they think it is all screen reader commands; and are afraid to try things because they think it will make something happen that they won't be able to come back from. Worse, as I understand it, sometimes Jaws, et al have created their own versions of Windows shortcut commands, which just muddies the waters.

Luke


Re: Navigating dates in the Windows 10 calendar using NVDA 2020.4 and the Windows 10 app essentials 21.03 add-on

Louise Pfau
 

I appologize.  I thought it was an issue with NVDA.
 
Louise


a few more examples of math equations consisting only of sequences of characters on the keyboard

Michael
 

Rather than putting a space between to quantities multiplied together such as x y, I represent multiplication by an asterisk. So x multiplied by y would be

Here is an example of an exponent that is a mathematical expression and not just a number.

Y = e(^ x^2 + 3*x + 6^)

The above will be read as y = e begin exponent x exponent 2 + 3x  + 6 end exponent.

Where e is the Euler number.

I neglected to give an example of the way I represent division.

I start the divisor in an equation with a slash. But following that, I enclose the divisor in left parenthesis / and / right parenthesis.

When the reading cursor  encounters a slach followed by a left parenthesis  and another slash, NVDA because of my regular expression will say “begin divisor. It then reads the mathematical expression until it encounters a slash followed by a right parenthesis.  NVDA then says “end divisor.

Y = 3/(/x^2 + 3/)

 

 


Re: Navigating dates in the Windows 10 calendar using NVDA 2020.4 and the Windows 10 app essentials 21.03 add-on

 

Hi all,

Based on the debug log I have received and testing it with Narrator, it appears Microsoft should be made aware of this issue. Specifically, when you move between weeks in Calendar app, a lot of UIA events are raised, none of which relates to focus movement (a lot of name property change events are raised, which are not related to focus movement).

Cheers,

Joseph

 

From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Joseph Lee via groups.io
Sent: Wednesday, April 7, 2021 11:18 AM
To: nvda@nvda.groups.io
Subject: Re: [nvda] Navigating dates in the Windows 10 calendar using NVDA 2020.4 and the Windows 10 app essentials 21.03 add-on

 

Hi,

I see. Can you try the following:

  1. While focused on Calendar app, restart NVDA with debug logging enabled (NVDA+Q, then select “restart with debug logging”).
  2. Use Calendar app to move between dates and weeks.
  3. Press NVDA+F1 to open log viewer.
  4. Copy everything in the log viewer and paste it as a private email to me. I will do my best to analyze and report back to the list on what might be happening.

Note that if there is indeed an error with Windows 10 App Essentials, I may need to investigate a possible solution for June release (April 2021 release was just finalized).

Also, just for reference, can you try with Narrator and see if that makes a difference?

Cheers,

Joseph

 

From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Louise Pfau
Sent: Wednesday, April 7, 2021 11:12 AM
To: nvda@nvda.groups.io
Subject: Re: [nvda] Navigating dates in the Windows 10 calendar using NVDA 2020.4 and the Windows 10 app essentials 21.03 add-on

 

On Tuesday, April 6, 2021 at 7:19 pm, Joseph Lee wrote:

Can you retry after restarting NVDA while focused on Calendar app? NVDA does announce dates as I move between weeks (up or down arrow in month view).

--

I tried that, and NVDA announced dates occasionally as I moved between weeks in month view, since I kept the default.  The rest of the time, there’s no spoken feedback.

 

Thanks,

 

Louise


Re: Navigating dates in the Windows 10 calendar using NVDA 2020.4 and the Windows 10 app essentials 21.03 add-on

 

Hi,

I see. Can you try the following:

  1. While focused on Calendar app, restart NVDA with debug logging enabled (NVDA+Q, then select “restart with debug logging”).
  2. Use Calendar app to move between dates and weeks.
  3. Press NVDA+F1 to open log viewer.
  4. Copy everything in the log viewer and paste it as a private email to me. I will do my best to analyze and report back to the list on what might be happening.

Note that if there is indeed an error with Windows 10 App Essentials, I may need to investigate a possible solution for June release (April 2021 release was just finalized).

Also, just for reference, can you try with Narrator and see if that makes a difference?

Cheers,

Joseph

 

From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Louise Pfau
Sent: Wednesday, April 7, 2021 11:12 AM
To: nvda@nvda.groups.io
Subject: Re: [nvda] Navigating dates in the Windows 10 calendar using NVDA 2020.4 and the Windows 10 app essentials 21.03 add-on

 

On Tuesday, April 6, 2021 at 7:19 pm, Joseph Lee wrote:

Can you retry after restarting NVDA while focused on Calendar app? NVDA does announce dates as I move between weeks (up or down arrow in month view).

--

I tried that, and NVDA announced dates occasionally as I moved between weeks in month view, since I kept the default.  The rest of the time, there’s no spoken feedback.

 

Thanks,

 

Louise


Re: Navigating dates in the Windows 10 calendar using NVDA 2020.4 and the Windows 10 app essentials 21.03 add-on

Louise Pfau
 

On Tuesday, April 6, 2021 at 7:19 pm, Joseph Lee wrote:
Can you retry after restarting NVDA while focused on Calendar app? NVDA does announce dates as I move between weeks (up or down arrow in month view).
--
I tried that, and NVDA announced dates occasionally as I moved between weeks in month view, since I kept the default.  The rest of the time, there’s no spoken feedback.
 
Thanks,
 
Louise


Re: Are there any extensions for LibreOffice?

Russell James
 

Hi Rui,

Do you know if LO is accessible to Orka on Linux?

Do you know if LO is written in Java?

Russ


On Wed, Apr 7, 2021 at 10:33 AM Richard B. McDonald <richardbmcdonald@...> wrote:

Thanks and will do!

 

From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Rui Fontes
Sent: Tuesday, April 06, 2021 7:04 AM
To: nvda@nvda.groups.io
Subject: Re: [nvda] Are there any extensions for LibreOffice?

 

Try contacting with:

Quentin Christensen <quentin@...>

 

Rui Fontes

 

Às 14:56 de 06/04/2021, Richard B. McDonald escreveu:

Hi Gigi!

 

Yes indeed, everything you say is correct.  No doubt, some collaboration between NVDA and LibreOffice (LO) seems necessary. 

 

In fact, I am presently connected with a person in Germany who is involved with LO development and who has a keen interest in improving LO’s accessibility.  He has likewise noted that some sort of collaboration is needed.  My problem is that I do not have any contacts within NVDA to try to connect them with LO.  I have said to my LO contact that I am willing to volunteer to improve accessibility.  I just do not know how to go about it. 

 

Do you know what I can do to foster this?

 

Thanks,

Richard

 

From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Gianluigi Coppelletti
Sent: Monday, April 05, 2021 7:43 AM
To: nvda@nvda.groups.io
Subject: Re: [nvda] Are there any extensions for LibreOffice?

 

Hi,

I'm afraid that there aren't any, but I really hope that the accessibility of LibreOffice with NVDA will be improved in the future, because more and more blind users are choosing this suite as this is a very good free alternative to MS-Office. Unfortunately this doesn't depend on the NVDA's developpers only.

Ciao.

Gigi

Il 01/04/2021 23.07, Richard B. McDonald ha scritto:

Hi!

 

I am using Windows 10, NVDA 2020.4 and LibreOffice 7.2.  Are there any extensions for NVDA that improve its accessibility with LibreOffice?  In particular, LibreOffice has a spreadsheet application, Calc, that has some material accessibility issues.

 

Thanks,

Richard


Re: edit user guide

 

On Wed, Apr 7, 2021 at 07:27 AM, Chris Smart wrote:
Windows is universal to all NVDA users.
-
And even though this is absolutely true, NVDA documentation should not focus on Windows commands, either.  Of course some will come up incidentally as you can't divorce a piece of software, in this case NVDA, from the ecosystem it runs under, which means that "natural interactions" between the two will occur in any user manual or similar at certain moments.

But it should be presumed that someone coming to NVDA is and has already been a Windows user and already knows the keyboard shortcuts used to do things like cut, copy, paste, save, save as, and the list goes on and on.

In addition, there is really excellent documentation for NVDA and for virtually any Microsoft offering you can name, including Excel.  You're going to need both, but the commands for NVDA have nothing to do with Excel (and, no, I'm not counting dedicated add-ons, which are another discussion) nor do the Excel commands have anything to do with NVDA.  You can insert any of the following in place of Excel and the principle applies: Word, Firefox, PowerPoint, Chrome, Edge, etc., etc., etc.

It is important, critically important, to be able to separate out "who controls what," and by that I mean knowing what commands are Windows commands and work pretty much everywhere under Windows, what are screen reader commands, and what are commands specific to the application being accessed.  These things interact with each other, but are definitely separate from each other in terms of "whos doing what."  And knowing who does what is the very first step in solving an issue (or knowing that you don't know, and asking to get clarity).
 
--

Brian - Windows 10 Pro, 64-Bit, Version 20H2, Build 19042  

Always remember others may hate you but those who hate you don't win unless you hate them.  And then you destroy yourself.

       ~ Richard M. Nixon

 


Re: Are there any extensions for LibreOffice?

Richard B. McDonald
 

Thanks and will do!

 

From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Rui Fontes
Sent: Tuesday, April 06, 2021 7:04 AM
To: nvda@nvda.groups.io
Subject: Re: [nvda] Are there any extensions for LibreOffice?

 

Try contacting with:

Quentin Christensen <quentin@...>

 

Rui Fontes

 

Às 14:56 de 06/04/2021, Richard B. McDonald escreveu:

Hi Gigi!

 

Yes indeed, everything you say is correct.  No doubt, some collaboration between NVDA and LibreOffice (LO) seems necessary. 

 

In fact, I am presently connected with a person in Germany who is involved with LO development and who has a keen interest in improving LO’s accessibility.  He has likewise noted that some sort of collaboration is needed.  My problem is that I do not have any contacts within NVDA to try to connect them with LO.  I have said to my LO contact that I am willing to volunteer to improve accessibility.  I just do not know how to go about it. 

 

Do you know what I can do to foster this?

 

Thanks,

Richard

 

From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Gianluigi Coppelletti
Sent: Monday, April 05, 2021 7:43 AM
To: nvda@nvda.groups.io
Subject: Re: [nvda] Are there any extensions for LibreOffice?

 

Hi,

I'm afraid that there aren't any, but I really hope that the accessibility of LibreOffice with NVDA will be improved in the future, because more and more blind users are choosing this suite as this is a very good free alternative to MS-Office. Unfortunately this doesn't depend on the NVDA's developpers only.

Ciao.

Gigi

Il 01/04/2021 23.07, Richard B. McDonald ha scritto:

Hi!

 

I am using Windows 10, NVDA 2020.4 and LibreOffice 7.2.  Are there any extensions for NVDA that improve its accessibility with LibreOffice?  In particular, LibreOffice has a spreadsheet application, Calc, that has some material accessibility issues.

 

Thanks,

Richard


Re: edit user guide

Chris Smart
 

Windows is universal to all NVDA users. Excel, Word, Thunderbird, pick whichever application you want, are not used by every NVDA user!  There is basic training available for Excel from NV  Access. Go buy yourself a copy. 


Sent from Chris's iPhone.


On Apr 7, 2021, at 02:47, falkogiepmans@... wrote:

Hi Brain,

Thanks for the explanation. I do think however that mentioning these shortcuts in the user guide would contribute to a more central overview. This is also why Alt+Tab, a windows shortcut, is mentioned in the user guide.
Just like Alt-Tab is necessary to navigate through different windows, hotkeys like Control+Arrows are essential for navigating large, non-empty excel files. Including these in the user-guide would give users one single overview of the essential shortcuts for excel.

Regards,
Falko
 
 


Re: edit user guide

 

Hi,

Having produced documentation and tutorials (including editing the user guide myself), I think it would be better to talk about Excel commands in Excel training module (from NV Access) or a dedicated tutorial series. The role of a user guide is to provide a basic overview of a product, not to serve as a one-stop database of commands. A user guide (or a manual) is designed to get the user up to speed on using a product and to provide a general overview. When talking about more specialized subjects such as Excel, a detailed approach is needed, and this is where tutorials and training books come in.

Another thing to consider is internationalization. Although adding Excel commands can help folks get to know Excel a bit better, this places a burden on translators who must not only translate Excel notes, but also cross-check with local communities on app commands (not all Office commands are the same across localizations). Of the work needed to translate NVDA into another language, documentation is the hardest (this is speaking from experience with coordinating Korean translation, and it took me and another translator weeks to translate, cross-check, and edit the user guide; this was done back in 2012).

Hope this helps.

Cheers,

Joseph

 

From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of falkogiepmans@...
Sent: Tuesday, April 6, 2021 11:47 PM
To: nvda@nvda.groups.io
Subject: Re: [nvda] edit user guide

 

Hi Brain,

Thanks for the explanation. I do think however that mentioning these shortcuts in the user guide would contribute to a more central overview. This is also why Alt+Tab, a windows shortcut, is mentioned in the user guide.
Just like Alt-Tab is necessary to navigate through different windows, hotkeys like Control+Arrows are essential for navigating large, non-empty excel files. Including these in the user-guide would give users one single overview of the essential shortcuts for excel.

Regards,
Falko

 

 


Re: edit user guide

falkogiepmans@...
 

Hi Brain,

Thanks for the explanation. I do think however that mentioning these shortcuts in the user guide would contribute to a more central overview. This is also why Alt+Tab, a windows shortcut, is mentioned in the user guide.
Just like Alt-Tab is necessary to navigate through different windows, hotkeys like Control+Arrows are essential for navigating large, non-empty excel files. Including these in the user-guide would give users one single overview of the essential shortcuts for excel.

Regards,
Falko
 
 


Recommended NVDA remote server based on golang development

 

 
Hello everyone
 this is the new NVDA remote server based on go lang development, here is the official GitHub repository and description
GitHub Repository:
https://github.com/tech10/nvdaRemoteServer
docker link
https://github.com/users/tech10/packages/container/package/nvdaremoteserver-docker
readme:
# Introduction
 
Welcome to the server for the NVDARemote addon, written in the [Go programming language.](https://golang.org/) The idea for this program was enspired by [the one released here.](https://github.com/jmdaweb/NVDARemoteServer)
 
The original server for the addon is written in [Python,](https://www.python.org/) which works well enough under most circumstances. However, there were a few reasons why I wanted to write the server in Go.
 
- Performance. Go can be much faster than Python if you write your program properly.
- Automatic generation of the self-signed certificate, if desired. Both the addon and the server utalize self-signed SSL certificates, and the addon doesn't verify a certificate's authenticity before connecting. Therefore, I wanted a program that would automatically generate the needed certificate, store it in memory, and use it until the program is terminated.
- Less memory should be used by the Go program.
- Easy to compile on other operating systems without changing the code base much, if at all.
- Can be compiled into a static, position-independent binary if desired, for use across systems using different libraries.
- Should be able to easily upgrade a program to utalize the latest version of Go without changing API calls within the program.
 
 
## Goals
 
My goals for this project are to create a stable server for the NVDARemote addon, which will be fast and have an efficient memory footprint. Configuration of the program will be done through the command line. Any log output can easily be redirected by the various facilities across operating systems, so a log file wouldn't need to be implemented by the program.
 
 
# Downloading / installation
 
## Go
 
With the latest version of Go installed, use the following command.
 
```console
$ go install github.com/tech10/nvdaRemoteServer
```
 
This should download and compile the latest code, placing the binary within your GOBIN environment variable. Presuming you have the GOBIN in your path, you will be able to execute it fairly easily. If not, you will need to update your path or execute the binary with its full path.
 
 
### Static build
 
If you require a completely static build of the program, you can clone the GitHub repository and execute the bash script. So long as you have the [musl libc](https://www.musl-libc.org/) installed, and musl-gcc in your path, you can do the following:
 
```console
$ git clone https://github.com/tech10/nvdaRemoteServer
$ cd ./nvdaRemoteServer
$ ./build-static.sh
```
 
Installing musl libc is beyond the scope of this document, and is specific to your Linux distribution.
 
 
## Docker
 
Thanks to a feature request in [issue 1,](https://github.com/tech10/nvdaRemoteServer/issues/1) a Dockerfile has been added. Automatically built and published images with GitHub actions are currently placed on the GitHub Container Registry, a service that is in public beta. As such, this service is subject to change until it's announced as stable. I don't anticipate many changes to the service, so everything ought to continue working as is.
 
Below are some minimal examples of getting the service up and running within a Docker container. The installation and use of Docker is beyond the scope of this document.
 
 
### Downloading the Docker image
 
#### GitHub Container Registry
 
The automatically built images are [located here.](https://github.com/users/tech10/packages/container/package/nvdaremoteserver-docker) Provided on that page is a command you can copy to the clipboard which should pull the latest image. Here is an example use of downloading and running the image.
 
```console
$ docker pull ghcr.io/tech10/nvdaremoteserver-docker:v0.1.20
$ docker run ghcr.io/tech10/nvdaremoteserver-docker:v0.1.20
```
 
 
#### Docker Hub
 
Automatically built images are now available on [Docker Hub.](https://hub.docker.com) Here is an example to pull the latest image and run it.
 
```console
$ docker pull tech10/nvdaremoteserver
$ docker run tech10/nvdaremoteserver
```
 
 
### Manually build docker image
 
Clone the repository, and from within the directory, build a Docker image, then run it. Some sample commands are below.
 
```console
$ git clone https://github.com/tech10/nvdaRemoteServer
$ cd ./nvdaRemoteServer
$ docker build -t nvdaremoteserver-docker .
$ docker run nvdaremoteserver-docker
```
 
# Usage
 
```console
$ nvdaRemoteServer [-cert /path/to/ssl/certificate] [-key /path/to/ssl/key] [-ip4 0.0.0.0] [-ip6 [::]] [-port 6837] [-motd "Example message of the day."] [-motd-always-display false] [-send-origin true] [-log-level 0]
```
 
Please note that the brackets around a parameter indicate that it is optional.
 
 
## Parameters
 
### Optional
 
#### `-cert`
 
This is the path to the SSL certificate the program will use to communicate securely, as the NVDA addon uses TLS for secure communication.
 
 
#### `-key`
 
This is the path to the SSL key. Both the certificate and key file need to exist and be accessible by the program, or the program will fall back to generating its own certificate.
 
 
##### Note about the cert and key files
 
If you are using the official NVDA addon as a server, or the unofficial one I linked above, you are welcome to use the same server.pem file for the certificate and key. The server should load successfully under this configuration.
 
If the certificate and key files both exist and fail to load a valid SSL key pair, the program will terminate rather than falling back on automatic self-signed SSL key generation.
 
 
#### `-ip4`
 
IPV4 address for the program to listen for incoming connections on. By default, all addresses are used. If you don't want to listen on IPV4, enter `-ip4 0` as the parameter.
 
 
#### `-ip6`
 
IPV6 address for the program to listen for incoming connections on. By default, all addresses are used.  If you don't want to listen on IPV6, enter `-ip6 0` as the parameter.
 
If you use 0 for both IPV4 and IPV6 addresses, the program will fall back to listening on all IP addresses.
 
The IPV6 parameter must have the address address surrounded by brackets. The address must also be on an interface for your computer. For example, this type of parameter can be used.
 
`[fd80::ffe8]`
 
So long as that is a valid IPV6 address on one of your network interfaces, this example in the local prefix of IPV6 addresses, you will be able to listen for incoming connections to the server.
 
 
#### `-port`
 
Choose the port the server will use. The default is 6837. Valid port numbers are between 1 and 65536.
 
 
#### `-motd`
 
Enter a message of the day for your server. You probably want to quote this string in the shell, ensuring spaces will be escaped properly, as in the example command line parameter.
 
 
#### `-motd-always-display`
 
Force the client to display the message of the day from the server, even if it hasn't changed since you last connected. This value is a boolean, so it can be true, false, 1, or 0. The numbers 1 and 0 are the same as true and false.
 
 
#### `-send-origin`
 
By default, when the server receives a message from a client, it will send that same message to all clients that need to receive it, but it will add an origin field to that message. This requires that the message be decoded into a value the program can more easily manipulate, an origin message added to it, then encoded back to the value that will be sent to all clients. This could cause a slight performance hit. You can disable this feature by setting it to false, if desired, though you might find some things don't work properly for you if you do so.
 
 
#### `-log-level`
 
This will choose what you want logged. The default level is 0.
 
 
##### Logging Levels
 
Each level above the previous will also log what the prior level is logging. For instance, 1 will log both levels 0 and 1.
 
- -1 will disable logging, with the exception of error messages, which are always logged. This includes panicks, which crash the program.
- 0 will log when the server has started, stopped, or if an error has occurred that isn't severe enough to be logged at all times.
- 1 will log information about which clients connect, logging both their ID and IP address.
- 2 will log what channels each client joins and leaves, which will contain channel passwords. Don't use this log level in production.
- 3 will log what the program is doing at each stage of its operation. Use this for debugging purposes only.
- 4 will log the protocol that the server and client are exchanging. Don't use this unless you're a developer or you want to annalize the protocol being used. This might cause a performance degrodation, since the protocol being exchanged is also sent to the console, or redirected to a file by your operating system if you've told it to do so.
 
 
# Notes on self-signed certificate generation
 
The certificate that this program generates will allow for secure verification. However, like the certificate packaged by the addon, you can't verify it by using any certificate authority. If this changes in the addon and it requires certificate verification in the future, a certificate, key, and a root certificate authority file will be required for the server to use. The client would then require the appropriate files to verify the certificate is valid, unless you get a certificate from Letsencrypt, or another certificate authority.
 
To generate the certificate, the program will use a source of random entropy that is cryptographically secure. This can be a problem on servers that are headless, meaning you access them remotely only. However, daemons such as Haveged exist to provide your system with available entropy that can be utalized.
 
As a result of the secure random number generator, along with the various algorithms needed to generate the keys, the generation of a self-signed certificate can take some time, anywhere between three to ten seconds in the best case sanario. If the program takes longer than thirty seconds to generate the certificate, it is probably hanging as it waits for available entropy to complete random number generation. Once the key is generated, the program will run with its full performance.
 
 
# Statistics
 
These by no means should be taken as representative of any definitive stats, but the results given by systemd's tracking of memory and CPU use can speak for themselves.
 
When running the servers, both the Go and Python versions, I was performing similar tasks over different periods of time, typing, reading, and doing virtually everything on the remote system, including writing this section of the document and collecting the statistics.
 
Here is what they gathered for both the Python and Go versions of the NVDARemote server. The Python version I was running was 3.9.2, and Go was 1.16.2.
 
 
## Python
 
The run time was approximately one hour.
 
```console
$ sudo systemctl status NVDARemoteServer
 NVDARemoteServer.service - NVDARemote relay server
 Loaded: loaded (/usr/lib/systemd/system/NVDARemoteServer.service; disabled; vendor preset: disabled)
 Active: active (running) since Tue 2021-03-23 12:37:24 MDT; 1h 0min ago
 Process: 11551 ExecStart=/usr/bin/python /usr/share/NVDARemoteServer/server.py start (code=exited, status=0/SUCCESS)
 Main PID: 11553 (python)
 IP: 4.5M in, 5.2M out
 Tasks: 5 (limit: 1151)
 Memory: 12.0M
 CPU: 1min 13.385s
```
 
 
## Go
 
The runtime was approximately five hours, fourteen minutes.
 
```console
$ sudo systemctl status nvdaRemoteServer
 nvdaRemoteServer.service - NVDARemote relay server
 Loaded: loaded (/etc/systemd/system/nvdaRemoteServer.service; enabled; vendor preset: disabled)
 Active: active (running) since Tue 2021-03-23 07:21:02 MDT; 5h 14min ago
 Main PID: 7512 (nvdaRemoteServe)
 IP: 10.6M in, 11.6M out
 Tasks: 8 (limit: 1151)
 Memory: 4.8M
 CPU: 13.324s
```
 
 
## Notes about the results
 
There is one difference between the Python and Go versions of the server that is significant, other than the programming language being used. The Python server forks itself into the background, something that isn't strictly necessary to do with systemd processes. The Go version of the server does no forking, so the systemd service is capable of monitoring its process directly. This may cause results to be different than they should be, but the use of memory and CPU time should be fairly accurate.
 
 
## Observations using the servers
 
My personal observations are the following, running both servers on a server approximately 50MS ping time away from both locations, which would make the round trip approximately 100MS:
 
- When running the Python version of the NVDARemote server, the delay is noticeable between the controlling computer, and the computer being controlled.
- When running the Python version of the server using [PyPy,](https://www.pypy.org/) which is a faster version of Python for longer running programs, the delay is less, better than Python and a bit more stable. I can still tell that I'm controlling a remote computer.
- When running the Go version of the NVDARemote server, the delay can still be noticed, but is less than the Python version of the server. General stability and delay between keystrokes is also improved on the Go version of the server, and sometimes, I forget that I'm actually controlling a remote computer.
 
I took no benchmarks of response times between sending and receiving data, but I would estimate that the Go program is at least four or five times faster than the Python program, perhaps more so. It definitely seems to use less CPU.
 
In comparing the two servers, keep the following in mind. Python is an interpreted language. Therefore, the program is compiled into machine code as it is executed. This compiling and reading of the program will increase CPU use and slow down the responsiveness of a program. PyPy will compile the entire Python program into machine code before it begins to execute, which makes it faster than Python for long running processes, though slightly slower in starting. I believe it was stated that PyPy is at least four times faster than Python. Go will compile the entire program into machine code before you execute it, leaving you with a binary that you will run on your computer, similar to programming languages such as C. In [one particular use case,](https://getstream.io/blog/switched-python-go/#:~:text=Go%20is%20extremely%20fast.,40%20times%20faster%20than%20Python.) it was stated that Go was forty times faster than Python.
 
 
# Bugs
 
Open an issue explaining what the bug is and how you encountered it. Try and be as detailed as you can, to allow the bug to be reproduced. Be detailed, or your issue will be closed if it can't be resolved properly.
 
 
# Contributing
 
Fork this project and submit a pull request. Please use another branch on your fork of this project if you are submitting a pull request for something. Also, keep the following guidelines in mind.
 
- Test your contributions before submitting them, making sure the program compiles properly.
- Remember to make use of gofmt. This will keep the formatting of the code standard for everyone.
- Try and keep your code as clean and efficient as possible.
 
 
# Final thoughts
 
Primarily, I am writing this program for my use, but am releasing it for anyone to utalize, should they wish.
Finally, thanks to tech10 for developing such a good server


Re: edit user guide

Pranav Lal
 

Hi Brian,

 

I agree with you about not having office  keyboard shortcuts in the NVDA user guide. However,  we should have documentation which explains how to do things in common applications in the NVDA manual or in its separate books like the excel book.

 

Take the example of  needing to determine which is the last occupied cell in a column. I believe ctrl + down arrow does this but when I am using the screen reader, my thoughts are something like:

A mouse user could scroll quickly and find this stuff out, where should I look? In the excel manual or in the NVDA manual for a feature or keyboard shortcut? Mean while, I am down arrowing or perhaps using page down to go down which is a suboptimal way to do this.

 

 

Pranav

From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Brian Vogel
Sent: Tuesday, April 6, 2021 7:21 PM
To: nvda@nvda.groups.io
Subject: Re: [nvda] edit user guide

 

Microsoft documents, and well, each and every keyboard shortcut for virtually every product they make, and definitely for the Office suite programs.

These keyboard shortcuts, and all program-specific keyboard shortcuts, are not NVDA shortcuts and would have no place in the NVDA user guide, as they have nothing whatsoever to do with NVDA (or any screen reader, for that matter).
--

Brian - Windows 10 Pro, 64-Bit, Version 20H2, Build 19042  

Always remember others may hate you but those who hate you don't win unless you hate them.  And then you destroy yourself.

       ~ Richard M. Nixon

 


Re: Navigating dates in the Windows 10 calendar using NVDA 2020.4 and the Windows 10 app essentials 21.03 add-on

 

Hi,

Can you retry after restarting NVDA while focused on Calendar app? NVDA does announce dates as I move between weeks (up or down arrow in month view).

Cheers,

Joseph

 

From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Louise Pfau
Sent: Tuesday, April 6, 2021 5:51 PM
To: NVDA Group <nvda@nvda.groups.io>
Subject: [nvda] Navigating dates in the Windows 10 calendar using NVDA 2020.4 and the Windows 10 app essentials 21.03 add-on

 

Hi.  I was trying to navigate through the dates in the Windows 10 calendar, which is set up in a tabular structure like an Excel spreadsheet.  When I was navigating by week (the row equivalent), NVDA wouldn’t speak the new date that had the focus.  It did speak the date when I moved by day though.  I’m using Windows 10 pro Version 20H2 (OS Build 19042.867), NVDA 2020.4, and the Windows 10 app essentials 21.03 add-on.  Has anyone else come across this?

 

Thanks,

 

Louise

3701 - 3720 of 86598