Closed Bug 957674 Opened 7 years ago Closed 7 years ago

Need an easy way to disable the screen reader

Categories

(Firefox OS Graveyard :: Gaia::System, defect)

x86
macOS
defect
Not set
normal

Tracking

(b2g-v1.4 fixed)

RESOLVED FIXED
1.4 S3 (14mar)
Tracking Status
b2g-v1.4 --- fixed

People

(Reporter: kgrandon, Assigned: yzen)

References

Details

Attachments

(3 files, 1 obsolete file)

I got stuck when using the phone because I accidentally enabled the screen reader, then basically got locked out because I could not disable it.

My recommendation is to augment the power menu to have an option to easily disable it. It should only be shown when the screen reader is enabled. Tapping it is another issue as I'm not sure sighted users will know how to access options.

Another approach may be to just have a confirmation when they enable the option.
Eitan - Would you have any preference/recommendation on how to proceed here?
Flags: needinfo?(eitan)
I am working on a more proper screen reader settings panel in bug 952312 with a confirmation screen. In general, we also want a quick toggle method as well. So I am all in favor of using the power menu in some way. So I see three goals in any design:

1. Minimize risk of user enabling it by mistake.
2. Allow blind users to enable it without any sighted assistance.
3. Allow users to easily toggle it off.

If anyone has good ideas about that, they should speak up!
Flags: needinfo?(eitan)
Depends on: 952312
A few thoughts:
1. The best way I've seen a screen reader toggle implemented is on iOS. The physical home button is clicked three times in rapid succession to turn VoiceOver on when initially setting up the phone, or if that is not done, this can be enabled later. Triple-click-home can also be set to other options like toggling Zoom or other accessibility features, or can be disabled altogether. Of course, since Firefox OS devices have no physical Home button, this is not an option. And no, the Home Buttons embedded in the display of the Buri and other devices at the bottom cannot be called physical in this sense, they are merely touch sensitive parts wit a specific hard-wired function. :)

2. Android does it this way, since 4.2: 1. Hold the Power button until you hear a sound. 2. Place two fingers slightly apart on the screen and leave them there until speech starts, and then a few seconds more to make it recognise you really want the screen reader TalkBack enabled. Turning TalkBack off is supposed to work the same way, but doesn't, e. g. press and hold the power button until you hear a sound, then place two fingers slightly apart on the display until it shuts off. I haven't managed to make this work at all on any device running Android 4.2 or later. Moreover, turning it on also sometimes is prone to error, e. g., the fingers being too far apart or to close together, or quivering when speech starts initially causes the gesture to be aborted etc.

But since we're going to have to deal with buttonless devices (except for the Power button), we'll have to find something similar to Android, but make it work better. :)

The alternative would be to use the volume rockers, perhaps in combination with the Power button, to execute something similar which does not rely on on-screen gesturing to toggle the screen reader on and off.

And as Eitan said, there is definitely a confirmation wanted, and also a screen to explain the most basic gestures, similar to what is in the VoiceOver settings screen on iOS, where the most basic gestures are explained in writing.
You can unlock the phone using the volume buttons and the home button to unlock it if I recall correctly.  I thought my phone was hosed as well. bug 920195/bug 916282

Having said that, it still doesn't handle overlays : bug 920197
Oops.  I was wrong.  It's not the volume buttons to move the icons.  It's the left right swiping and the home button to accept.  The voice over will occur automatically.
Until it is fixed, can someone tell me where and how this setting is stored in the data/ folder?
That might allow to answer to this guy for example http://forum.geeksphone.com/index.php?topic=5871.0

So far, I had looked at the sqlite db in data/local/storage/persistent/1001+f+app+++settings.gaiamobile.org/idb but couldn't find anything.
Duplicate of this bug: 927283
I got stuck with this during the FOSDEM as well. Vivien told me he had a WiP patch to handle the screen reader in the system menu (the one that appears with a long press on the power button). Vivien, did I get it right?
Flags: needinfo?(21)
Assignee: nobody → yzenevich
Duplicate of this bug: 927279
This bug seems pretty stale am I correct? I faced this issue yesterday and could not find a work-around to disabling the screen reader. Is that WiP patch laying around anywhere?
Nevermind. Read the year wrong. Bug is quite fresh and I would certainly appreciate some info on how to disable screen reader. Thanks.
There's going to be a pull request for it soon, where you'll be able to press sleep button 3 times, and hear an instruction to press 3 more times to disable/enable the screen reader. For now you would have to dig into the developer -> screen reader menu. Swipe to traverse the elements on the page, double tap to activate the link/button etc.
(In reply to Kevin Grandon :kgrandon from comment #0)
> My recommendation is to augment the power menu to have an option to easily
> disable it. It should only be shown when the screen reader is enabled.

I like this idea additionally. I can imagine the use case:
1. visual user launches screen reader (curiosity)
2. visual user gets frustrated
3. visual user goes to power off, sees option to turn SR off.
Opened a bug 968820 for what David suggested.
(In reply to Yura Zenevich [:yzen] from comment #14)
> Opened a bug 968820 for what David suggested.

Blame Kevin ;)
I don't think we need both bugs here. Let's dupe one of them so it's not confusing.
Is there some documentation somewhere on how to use the screen reader? Is that another bug?

For other folks who find this I was able to disable screen reader by using 2 finger swipe to get over to the settings app and disable it.

Here's what I learned so far:

right/left swipe is like tab/shift-tab, it will navigate around the screen to various items.
double-tap is like single tap, it will activate the item in focus
2 finger right/left swipe should act like normal swipe, allowing you to navigate to multiple home screens

The 2 finger swipe is a bit touchy. I had to do it many times before it worked.

Yura mentioned that the 2 finger swipe gesture might not be interpreted so well. Here's the file she referred me to:

http://hg.mozilla.org/mozilla-central/file/622390b14ed9/accessible/src/jsat/TouchAdapter.jsm
(In reply to Augustin Trancart [:autra] from comment #6)
> Until it is fixed, can someone tell me where and how this setting is stored
> in the data/ folder?
> That might allow to answer to this guy for example
> http://forum.geeksphone.com/index.php?topic=5871.0
> 
> So far, I had looked at the sqlite db in
> data/local/storage/persistent/1001+f+app+++settings.gaiamobile.org/idb but
> couldn't find anything.

I posted an answer on the gp forum with the same info I just posted here. A little mini-doc on how to use screen reader for those not familiar.
Attached file Github pull request.
Attachment #8371616 - Flags: review?(alive)
To enable/disable screen reader with this pull request:

    Press sleep button 3 times (within 1s each)
    Get a voice confirmation to click sleep button 3 more times (within the next 30 minutes)
    Press sleep button 3 more times to actually enable/disable
Component: Gaia → Gaia::System
@alive: addressed Github comments.
Comment on attachment 8371616 [details] [review]
Github pull request.

Thanks for your refactor and jsdoc comment.
Attachment #8371616 - Flags: review?(alive) → review+
This has Travis CI linter failures.
https://travis-ci.org/mozilla-b2g/gaia/jobs/18418111


----- FILE : /home/travis/build/mozilla-b2g/gaia/apps/system/js/accessibility.js -----

Line 28, E:0230: Prefer "?Type" to "Type|null": "null|Number"

Line 33, E:0230: Prefer "?Type" to "Type|null": "null|Number"

Found 2 errors, including 0 new errors, in 1 files (1268 files OK).
Flags: needinfo?(21)
Keywords: checkin-needed
Target Milestone: --- → 1.4 S1 (14feb)
Updated the jsdoc comment to pass the linter.
Keywords: checkin-needed
https://github.com/mozilla-b2g/gaia/pull/16051
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Is "sleep button" the "power button"? I might be wrong, but I never heard such definition on any mobile OS, and I found it very confusing.
Correct, this is how it's called in code, for example the events from pressing it are called 'sleep-button-press' and 'sleep-button-release'
Do you expect common users to understand immediately what the "sleep button" is? I honestly didn't, at first I thought there was some new strange button on the device besides power, home and volume up/down ;-)
As a(nother) localizer, I wondered about the sleep button as well, so reading the comments above I’d pled for Power button for instance. Also, please keep in mind that in general we don’t “press” buttons in Fx OS but tap them instead - the same goes for ‘click’. Hence, this bug creates 2 lonesome occurrences of ‘press’ in the tree…
However, we can ignore the latter when pressing real hardware power buttons, sorry. ;)
I'm reopening this because I think the current situation is sub-par. I constantly hear the message for some reason, and "Sleep button" is not something that is familiar to me. I think it needs to be some notice on screen as well has having the messaging/interaction fixed. It is far too easy to enable this and have the speakers blare when I don't want them to.

I think part of the problem may be that sometimes the displays lag when unlocking it, so you press the power button a second time, which turns it off, then a third time to turn it on.

There is also still no discoverable way to disable the screen reader, as was the intention of bug. So in essence, we've made it easier to enable, but still no discoverable way to disable it.

Eitan, Yura - do you guys think we can do anything more here?
Status: RESOLVED → REOPENED
Flags: needinfo?(yzenevich)
Flags: needinfo?(eitan)
Resolution: FIXED → ---
I would recommend something similar to what android does here, holding power/home, then some screen gesture. This is far too easy to get an unwanted sound from the device. If we do want a single button press, I would recommend pressing the same button for 20+ times. (If this is something they want to enable, they will just have to do this one time)
(In reply to Kevin Grandon :kgrandon from comment #32)
> I'm reopening this because I think the current situation is sub-par. I
> constantly hear the message for some reason, and "Sleep button" is not
> something that is familiar to me. I think it needs to be some notice on
> screen as well has having the messaging/interaction fixed. It is far too
> easy to enable this and have the speakers blare when I don't want them to.

I think there might be an issue with the toggle approach and the on screen message since the screen might be off once the press sequence is done. Somebody already suggested an additional item in the power off dialog to disable the screen reader (if it is on) as an additional way to disable it?
Flags: needinfo?(yzenevich)
(In reply to Kevin Grandon :kgrandon from comment #33)
> I would recommend something similar to what android does here, holding
> power/home, then some screen gesture. This is far too easy to get an
> unwanted sound from the device. If we do want a single button press, I would
> recommend pressing the same button for 20+ times. (If this is something they
> want to enable, they will just have to do this one time)

Increasing the sequence is reasonable, IMO, Marco what are your thoughts?
Flags: needinfo?(marco.zehe)
I think this is not yet perfect, but this will solve the problem for now. (The user will need to press the button ten times to hear the announcement, then ten additional times to activate it)

Eitan - please let me know what you think. Thanks!
Attachment #8382234 - Flags: review?(eitan)
Comment on attachment 8382234 [details] [review]
Pull request - follow up, increase button press time

Or Yura can review this perhaps. Looking forward to figuring something out here.
Attachment #8382234 - Flags: review?(yzenevich)
Comment on attachment 8382234 [details] [review]
Pull request - follow up, increase button press time

I agree that this not good, and that we need to change it. The flip-side of this issue is that it is also really hard to enable/disable the screen reader since it requires precise timing. Increasing it to 10 will make it almost impossible to pull off.

We really need to either find another solution, or fix this in a way that it would only accept rapid button presses.

Yura and I will work on this and propose something ASAP.
Attachment #8382234 - Flags: review?(eitan) → review-
Flags: needinfo?(eitan)
One other thing to consider: This toggle can be useful to developers, too, quickly checking accessibility of their web app, then turning screen reader off again to continue working on stuff. On iOS, where a triple-click of the home button turns VoiceOver on or off, this is a great way for app developers to quickly test their app for accessibility without having to go to any settings screens or such.

I'd prefer a fix that requires rapid presses, since that is then unlikely to interfere with turning the screen on and growing impatient because it takes so long. ;)
Flags: needinfo?(marco.zehe)
20 presses within 30 seconds is relatively easy I think :)

We may be able to do rapid presses, but we need to be careful - our hardware has issues unlocking sometimes, and I feel that rapid presses are much harder to enable it than longer actions such as 10+ button presses.

I would say 4 presses within 3 seconds might be a solid experience, that's easy to activate when needed.
(In reply to Kevin Grandon :kgrandon from comment #40)
> 20 presses within 30 seconds is relatively easy I think :)
> 

The problem is that it needs to be 20, specifically timed, presses. Each not too soon after the previous one, and not too late. This is because of the sleep/wake cycle of the hardware, I am assuming. Close your eyes and try enabling or disabling the screen reader.

This is a proposal Yura is already working on:
Press volume up-down in succession 3 times (6 distinct presses). Get a voice prompt, and do it again. We could increase the required count here if you think three times is to little, since the rapid pressing is much easier for a user. But generally, I can't think of any reason why a user would rapidly be pressing up-down, so the voice prompt should come up much less often.

What do you think?
Comment on attachment 8382234 [details] [review]
Pull request - follow up, increase button press time

(In reply to Eitan Isaacson [:eeejay] from comment #41)
> The problem is that it needs to be 20, specifically timed, presses. 

Interesting - I just smashed the power button in no order, without any timing and it was fine. Maybe I was testing on too powerful hardware though.

> This is a proposal Yura is already working on:

I like this much better - let's do it. It also won't toggle the screen state which is great. Thanks!
Attachment #8382234 - Attachment is obsolete: true
Attachment #8382234 - Flags: review?(yzenevich)
This is a pull request for the bug after it was reopened. Now the screen reader will be enabled/disabled after the volume up and then down buttons are pressed 3 times, and then confirmed again with the same action.
Attachment #8383942 - Flags: review?(alive)
Comment on attachment 8383942 [details] [review]
A new pull request for 957674

Let's have UX confirm this: I wonder volume up x 3 + volume down x 3 is also a too-easy way to trigger screen reader.
Attachment #8383942 - Flags: ui-review?(firefoxos-ux-bugzilla)
To be clear, the sequence is:
up
down
up
down
up
down
spoken message
up
down
up
down
up
down
Screen reader is on.

So it's not three times up, then three times down.
Flagging both Rob and Harly, as I'm not sure who should take this.
Flags: needinfo?(rmacdonald)
Flags: needinfo?(hhsu)
Attachment #8383942 - Flags: ui-review?(rmacdonald)
Attachment #8383942 - Flags: ui-review?(hhsu)
Attachment #8383942 - Flags: ui-review?(firefoxos-ux-bugzilla)
I have tried the patch on my Inari device, and I don't think that the volume up & down will be too-easy to trigger. In fact, I didn't succeed for many times due to the timing. And for visually impaired people, as their motoring skill is not as responsive as us, I am wondering if this is too-hard for them? 

Another question is that what happened to the triple tap power key method? Is there something wrong with it?
Flags: needinfo?(hhsu)
(In reply to Harly Hsu from comment #47)
> I have tried the patch on my Inari device, and I don't think that the volume
> up & down will be too-easy to trigger. In fact, I didn't succeed for many
> times due to the timing. And for visually impaired people, as their motoring
> skill is not as responsive as us, I am wondering if this is too-hard for
> them?
I think should work quite well for the visually impaired users. For somebody with the motor disability we would need to have an alternative way, perhaps not in the scope of this bug.
> 
> Another question is that what happened to the triple tap power key method?
> Is there something wrong with it?

The triple power button press was not super reliable and required accurate timing because it was also affected by the time it took to dim/light up the screen. Kevin also mentioned that he was able to involuntarily trigger it after toggling the screen on/off a several times.
Let's get it working for the majority of users first, and that's blind folks. People with motor impairments have needs that are quite different from that of a blind user. And the screen reader is specifically targetted at blind users.
Sorry for the confusion. What I meant was that from my past experience with visually impaired user, they do not have the quick response time & motor skills like us. Therefore, the complex volume up & down triggering method might not be suitable for the visually impaired user. I recommend sticking with triple tap power key method.
Hi Harly,
The specific problem with the power button is that it requires a much more precise timing between the presses (because of the screen going on/off). That timing also depends on how fast the button press is handled within Gaia which sometimes might not be that consistent.
Harly, don't know who you were working with, but as someone who is blind himself, I can tell you that blind people do not generally have lacking motor skills in pressing a volume rocker up, then down three times in quick succession. We're just blind, you know? And the triple-press of the power button is definitely not going to work for visually impaired users because the timing is so critical there. The new solution is much much better, because it is more reliable and less time critical..
I was previously testing on Inari device, and it always take me 2~3 times to successfully turn on/off screen reader. However, after testing on Unagi, it is rather easy to trigger. Therefore, I am OK with vol up/down three times method. But could someone tested on Inari to make sure that it work smoothly as Unagi? Thanks
Comment on attachment 8383942 [details] [review]
A new pull request for 957674

r+ if UX sign off.
Attachment #8383942 - Flags: review?(alive) → review+
Attachment #8383942 - Flags: ui-review?(hhsu) → ui-review+
I actually test on Inari and it seems to work smoothly for me.
Comment on attachment 8383942 [details] [review]
A new pull request for 957674

+ based on Harly's feedback.
Attachment #8383942 - Flags: ui-review?(rmacdonald) → ui-review+
Flags: needinfo?(rmacdonald)
Master: b0405b5f9b87b7e9dae2b68f2af47f2789d61f23
Keywords: checkin-needed
Target Milestone: 1.4 S1 (14feb) → 1.4 S3 (14mar)
https://github.com/mozilla-b2g/gaia/pull/16752/files#diff-1 changed strings without changing the string IDs, we'll need to get that fixed for l10n still.
Alive, can you review and merge this? It's blocking updates to l10n.
Attachment #8388506 - Flags: review?(alive)
Comment on attachment 8388506 [details] [review]
Change IDs for changed strings

THanks!
Attachment #8388506 - Flags: review?(alive) → review+
https://github.com/mozilla-b2g/gaia/commit/b31771c0be6c4d7c67a8762be2f1b80237203b08
Status: REOPENED → RESOLVED
Closed: 7 years ago7 years ago
Resolution: --- → FIXED
Duplicate of this bug: 927279
I can't disable the Screen Reader
(In reply to rafael.cordano from comment #63)
> I can't disable the Screen Reader

What version are you using on your device?
Flags: needinfo?(rafael.cordano)
Firefox OS 1.4
Flags: needinfo?(rafael.cordano)
So to disable the screen reader in 1.4 volume buttons should work:

To disable it press buttons in the following sequence: 
volume up 
volume down
volume up
volume down
volume up
volume down
Note: buttons have to be pressed fairly quickly.
Not works for me.
Harly, can you check if your ui-review+ still stands or if anything should be reviewed again? Thank you!
Flags: needinfo?(hhsu)
I can't understand what I need to check.
(In reply to rafael.cordano from comment #69)
> I can't understand what I need to check.

Ok, Rafael, what device do you have? Is it a tablet?
I have the InFocus Tablet from the TCP Mozilla program.
Ok. so the volume buttons are not available on the tablet. You need to:
Go to settings app -> device information -> more information -> developer -> accessibility(or screen reader) and disable it. 
To focus on something on the screen press and hold over the icon, button, etc.
To activate focused element double tap on the screen (as long as the item you are trying to activate is focused).
And, how can I scroll to the right?
(In reply to rafael.cordano from comment #73)
> And, how can I scroll to the right?

You should focus on one of the icons on the homescreen and then swipe with 2 fingers just like you would with one.
Hello, scuse me, but this gesture not scrolls.
Thanks
Hello,
if I can't go to settings app, I need to do a hard reset, it could be a solution.
Thx u
Rafael
Any ideas?
Ya that gesture is difficult with that version of the screen reader and needs to be performed very accurately. I would try it many times. Hard reset should fix the issues, as long as user data is removed.
And how can I do the hard reset?

Thanks
Hi Stephany, I think this is an issue that related to the version of screen reader in Tablet. The phone version is working fine, so I think the ui-review+ still stands. Rafael, I just tried it on the tablet, you can swipe left or right on the screen to move the cursor, and double tap to enter.
Flags: needinfo?(hhsu)
I don't know why the swipe not works.
Thanks
PD: how can I make a hard reset?
You need to log in before you can comment on or make changes to this bug.