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

How to prevent NVDA to overwrite touchscreen configurations on Windows #9682

Closed
simonesilva opened this issue Jun 6, 2019 · 21 comments · Fixed by #10557
Closed

How to prevent NVDA to overwrite touchscreen configurations on Windows #9682

simonesilva opened this issue Jun 6, 2019 · 21 comments · Fixed by #10557
Assignees
Milestone

Comments

@simonesilva
Copy link

Steps to reproduce:

When NVDA is on, it overwrites a set of predefined touch and gestures configurations for touchscreens, so what was before a single tap action becomes a fast double tap one. I need to prevent NVDA from overwriting some default settings on Windows.

I already tried removing "tap (Touch screen)" from "Input Gestures" under "Preferences" option, but it only stopped dictating, I still have to double tap to perform an action.

System configuration

I'm using windows 10

NVDA version:

2019.1.1

Windows version:

Windows 10

@DrSooom
Copy link

DrSooom commented Jun 9, 2019

What happens if you press NVDA+F2 before performing the touch gesture?

@alejoceballos-tw
Copy link

Hi @DrSooom! I believe the issue here is that there ain't a keyboard to press F2. What @simonesilva is asking is to disable double tap feature and keep it disabled when restarting Windows in a touch only device.

By-the-way, what is the "NVDA" from "NVDA+F2", is it a special key from a specific device?

@XLTechie
Copy link
Collaborator

XLTechie commented Jun 10, 2019 via email

@josephsl
Copy link
Collaborator

josephsl commented Jun 10, 2019 via email

@XLTechie
Copy link
Collaborator

@simonesilva Can you explain more of the use case here?

  1. Is this a touch-only device, as @alejoceballos-tw said?
    • If so: How does the user expect to explore the screen by touch, if every touch activates something? That is the purpose of double tap in this context.
  2. If it is not a touch-only device, is it your intention to have the screen be used by sighted users--I.E. someone not depending on NVDA, while the NVDA user works only by using the keyboard?
  3. If not 1 or 2, then what is your use case for NVDA here?

@XLTechie
Copy link
Collaborator

@josephsl wrote:

Hi, for use case 1, already resolved (at least partially): Enhanced Touch Gestures add-on does have touch passthrough mode where one can ask NVDA to deactivate its own touchscreen support (yours truly wrote that back in 2017; I know that I start to sound like a salesperson).

Hey if you wrote it, sell it baby!
That might be the groundwork for @simonesilva 's solution, although I still wonder about the use-case for disabling it globally on boot, if in fact that's what @simonesilva wanted.

Anyway, here, I'll help you sell: https://addons.nvda-project.org/addons/enhancedTouchGestures.en.html

@DrSooom
Copy link

DrSooom commented Jun 11, 2019

Starting NVDA with the command line parameter/flag "--no-sr-flag" isn't a good solution here. I'm able to see some situations, where multiple users are working together on one single machine. Therefore it makes sense to add a new option in NVDA to completely disable the NVDA's touch functionality via a simple checkbox in the NVDA Touch Interaction Settings as well as via a new flag called "--disable-touch".

@josephsl: Sorry for the stupid question, but are there some specific reasons, why your add-on isn't included into NVDA yet? Or is it already on the way? (I'm not familiar with the whole touch feature in NVDA and on Windows 10. Well, and I don't have a touch screen here too.)

@josephsl
Copy link
Collaborator

josephsl commented Aug 9, 2019

Hi,

Including Enhanced Touch Gestures to Core: that's a long-term plan.

One can disable touch support by running a portable copy of NVDA, but that's not ideal for some scenarios. You can disable touchscreen support after NVDA loads, and that's the mechanism behind the solution in my add-on.

I'll add a way to do this globally in the next version of Enhanced Touch Gestures.

Thanks.

@Qchristensen
Copy link
Member

From a conversation with a user, ideally as and when such functionality is available in NVDA itself, it would be useful to be able to set it in configuration profiles, enabling it to be set globally, or per app.

@josephsl
Copy link
Collaborator

Hi,

It'll take me a day or two to come up with a pull request that will resolve this once and for all, and before writing that, I too am interested in hearing back from the original poster as to why this feature is needed (I think I know why, but just want to make sure this person clarifies things).

There is a more important touchscreen PR, and that is right-mouse click simulation. Both PR's are independent from one another, but I'd give slightly higher priority to mouse click simulation.

Thanks.

@donalfitzpatrick
Copy link

Hi,

Would like to add a use-case for this if I may. We've developed a web app which enables editing and/or exploration of mathematics. Part of our functionality is to enable a user to explore the shape of graphs on a touchscreen device. The ability to have NVDA ignore all gestures on a per-app, or indeed in specific screens in a given app, would be very useful.

@josephsl
Copy link
Collaborator

josephsl commented Sep 16, 2019 via email

@josephsl
Copy link
Collaborator

Hi,

Sometime this week I'll introduce a prototype try build that will demonstrate what the fix will look like (note that the try build must be installed in order for the fix to work).

Thanks.

@josephsl
Copy link
Collaborator

josephsl commented Oct 3, 2019

Hi,

Please try this try build and see if it helps. Note that you must be running this installed on a touchscreen computer, and it does not support profile switching yet. I'll introduce profile switching support and a command to enable/disable touchscreen support (unassigned) once this try build is verified as working.

Thanks.

@Deon588
Copy link

Deon588 commented Oct 4, 2019

Thought i'd add my use case for this feature: I am a low vision user and use NVDA for reading text however there are lots of other interactions e.g. closing/dragging a window that I would like to be able to do using the normal windows touch interface as I have enough site to perform thos actions without the NVDA overlay. Would be amazing if this could be toggled by a keyboard shortcut....

@josephsl
Copy link
Collaborator

josephsl commented Oct 4, 2019 via email

@LeonarddeR
Copy link
Collaborator

@josephsl: Are you intending to provide a pr for this shortly?

@josephsl
Copy link
Collaborator

josephsl commented Nov 20, 2019 via email

josephsl added a commit to josephsl/nvda that referenced this issue Nov 20, 2019
Foundation: allow users to disable touch handler overlay by adding 'touch enabled' key to NVDA settings.
josephsl added a commit to josephsl/nvda that referenced this issue Nov 20, 2019
josephsl added a commit to josephsl/nvda that referenced this issue Nov 20, 2019
…. re nvaccess#9682.

Enable touch support if configured to do so via settings. Also, change log text on touchscreen detection to just announce how many touch points are available before proceeding to enable/disable touch support.
josephsl added a commit to josephsl/nvda that referenced this issue Nov 20, 2019
Allow users to enable/disable touch support via Touch Interaction settings panel.
josephsl added a commit to josephsl/nvda that referenced this issue Nov 21, 2019
Foundation: allow users to disable touch handler overlay by adding 'touch enabled' key to NVDA settings.
josephsl added a commit to josephsl/nvda that referenced this issue Nov 21, 2019
josephsl added a commit to josephsl/nvda that referenced this issue Nov 21, 2019
…. re nvaccess#9682.

Enable touch support if configured to do so via settings. Also, change log text on touchscreen detection to just announce how many touch points are available before proceeding to enable/disable touch support.
josephsl added a commit to josephsl/nvda that referenced this issue Nov 21, 2019
Allow users to enable/disable touch support via Touch Interaction settings panel.
josephsl added a commit to josephsl/nvda that referenced this issue Nov 21, 2019
Foundation: allow users to disable touch handler overlay by adding 'touch enabled' key to NVDA settings.
josephsl added a commit to josephsl/nvda that referenced this issue Nov 21, 2019
josephsl added a commit to josephsl/nvda that referenced this issue Nov 28, 2019
…touch mode setter function. Re nvaccess#9682.

Similar to audio ducking support: use a dedicated 'set touch support' function to enable/disable touch handler thread based on whether touch support should be anbeld or not. This function in turn will be called when configuration profile changes to support scenarios such as manually turning off touch support or using profiles for apps where NVDA's own touch support should be turned off.
josephsl added a commit to josephsl/nvda that referenced this issue Nov 28, 2019
… switching support. Re nvaccess#9682.

Touch handler's initialize function will set appropriate touch support mode based on current config value. Also, both initialize and termiante methods support profile switching by calling register/unregister function, respectively.
josephsl added a commit to josephsl/nvda that referenced this issue Nov 28, 2019
josephsl added a commit to josephsl/nvda that referenced this issue Nov 28, 2019
…9682.

Reviewed by Leonard de Ruijter: add type annotations, along with docstring for touch supported function.
josephsl added a commit to josephsl/nvda that referenced this issue Nov 28, 2019
Comment from Leonard de Ruijter: convert touch interaction panel to use GUI helper code just like other panels.
josephsl added a commit to josephsl/nvda that referenced this issue Nov 30, 2019
@comanna
Copy link
Contributor

comanna commented Jan 4, 2020 via email

@josephsl
Copy link
Collaborator

josephsl commented Jan 4, 2020 via email

@josephsl
Copy link
Collaborator

Hi,

And now, with 2019.3 under translatable string freeze and with first 2020.1 changelog entry showing, it is time for a pull request (coming up shortly).

I'm aware that some folks might be asking for a shortcut command to toggle touch support. For now that won't be part of the pull request - to be evaluated at a later time. An ideal solution for this issue would be a touch-based passthrough command.

Thanks.

josephsl added a commit to josephsl/nvda that referenced this issue Feb 13, 2020
Foundation: allow users to disable touch handler overlay by adding 'touch enabled' key to NVDA settings.
josephsl added a commit to josephsl/nvda that referenced this issue Feb 13, 2020
josephsl added a commit to josephsl/nvda that referenced this issue Feb 13, 2020
…. re nvaccess#9682.

Enable touch support if configured to do so via settings. Also, change log text on touchscreen detection to just announce how many touch points are available before proceeding to enable/disable touch support.
josephsl added a commit to josephsl/nvda that referenced this issue Feb 13, 2020
Allow users to enable/disable touch support via Touch Interaction settings panel.
josephsl added a commit to josephsl/nvda that referenced this issue Feb 13, 2020
josephsl added a commit to josephsl/nvda that referenced this issue Feb 13, 2020
…touch mode setter function. Re nvaccess#9682.

Similar to audio ducking support: use a dedicated 'set touch support' function to enable/disable touch handler thread based on whether touch support should be anbeld or not. This function in turn will be called when configuration profile changes to support scenarios such as manually turning off touch support or using profiles for apps where NVDA's own touch support should be turned off.
josephsl added a commit to josephsl/nvda that referenced this issue Feb 13, 2020
… switching support. Re nvaccess#9682.

Touch handler's initialize function will set appropriate touch support mode based on current config value. Also, both initialize and termiante methods support profile switching by calling register/unregister function, respectively.
josephsl added a commit to josephsl/nvda that referenced this issue Feb 13, 2020
josephsl added a commit to josephsl/nvda that referenced this issue Feb 13, 2020
…9682.

Reviewed by Leonard de Ruijter: add type annotations, along with docstring for touch supported function.
josephsl added a commit to josephsl/nvda that referenced this issue Feb 13, 2020
Comment from Leonard de Ruijter: convert touch interaction panel to use GUI helper code just like other panels.
josephsl added a commit to josephsl/nvda that referenced this issue Feb 13, 2020
michaelDCurran pushed a commit that referenced this issue Jun 23, 2020
…10557)

* ConfSpec: add touch enabled key. Re #9682.

Foundation: allow users to disable touch handler overlay by adding 'touch enabled' key to NVDA settings.

* Touch handler: copyright header

* Touch handler: use platform version tuple to determine if touch support should be used. Re #9682

* Touch handler: enable touch support/overlay if told to do so by users. re #9682.

Enable touch support if configured to do so via settings. Also, change log text on touchscreen detection to just announce how many touch points are available before proceeding to enable/disable touch support.

* Settings/touch interaction: add touch support toggle. Re #9682.

Allow users to enable/disable touch support via Touch Interaction settings panel.

* Touch supporte3d: add debugLog flag so excessive log output will not be seen unless requested. Re #9682.

* Touch handler: handle configuration profile switches via a dedicated touch mode setter function. Re #9682.

Similar to audio ducking support: use a dedicated 'set touch support' function to enable/disable touch handler thread based on whether touch support should be anbeld or not. This function in turn will be called when configuration profile changes to support scenarios such as manually turning off touch support or using profiles for apps where NVDA's own touch support should be turned off.

* Touch handler: set touch support mode and register/unregister profile switching support. Re #9682.

Touch handler's initialize function will set appropriate touch support mode based on current config value. Also, both initialize and termiante methods support profile switching by calling register/unregister function, respectively.

* Touch interaction settings panel: use touchHandler.setTouchSupport function to toggle touch handler thread. Re #9682.

* Touch interaction panel: add accelerator.

* User guide: add notes on touch interaction support checkbox in settings. Re #9682

* Touch handler: review comments (annotations, docstring). Re #9682.

Reviewed by Leonard de Ruijter: add type annotations, along with docstring for touch supported function.

* Touch interaction panel: convert to use GUI helper. re #9682.

Comment from Leonard de Ruijter: convert touch interaction panel to use GUI helper code just like other panels.

* User guide: clarify the behavior of touch support when touch is disabled. Re #9682

* Touch handler: update copyright years
@nvaccessAuto nvaccessAuto added this to the 2020.2 milestone Jun 23, 2020
@feerrenrut feerrenrut modified the milestones: 2020.2, 2020.3 Jul 8, 2020
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.