Opened 3 years ago

Last modified 5 months ago

#1676 reopened enhancement

Announcement of keyboard layout changes depending on context should be optional.

Reported by: MHameed Owned by:
Priority: minor Milestone: near-term
Component: Speech Version: master
Keywords: Cc:
Operating system: Blocked by:
Blocking:
Changes document entry (for developers):

Description

For multi lingual users, at the moment when they are in edit areas such as in wordpad or word and they move between lines written in different languages, NVDA automatically announces the change made to the keyboard layout depending on the current line.

I.e. if it is a line in english, then any inserted will be using the english layout.

english.

The issue is that when the user is reading a multi-lingual document, they keep hearing layout arabic Egypt, english US, etc.

The announcement is useful for editing, but irritating for reading, so we need an option to suppress it.

Thanks.

Attachments (2)

line by line.log (30.6 KB) - added by fatma.mehanna 2 years ago.
sayAll.log (56.1 KB) - added by fatma.mehanna 2 years ago.

Download all attachments as: .zip

Change History (26)

comment:1 Changed 3 years ago by fatma.mehanna

hi devs,
can you try to fix this issue in the incoming release?
it is irritating us as we read multi lingual documents.
we don't have to hear the keyboard layouts when we read each line. this wastes much time.
thanks.

comment:2 follow-up: Changed 3 years ago by jteh

This can't be added for 2011.3, as it's now frozen.

If we add this, they will never be announced if disabled; i.e. even when you press keys to manually switch layouts. Is this what you want?

comment:3 Changed 2 years ago by MHameed

  • Reporter changed from orcauser to MHameed

comment:4 Changed 2 years ago by jteh

comment:2 is still an open question.

comment:5 in reply to: ↑ 2 ; follow-up: Changed 2 years ago by MHameed

Replying to jteh:

If we add this, they will never be announced if disabled; i.e. even when you press keys to manually switch layouts. Is this what you want?

Not ideal, but if it cant be done any other way then this will be better than the current situation.

Idealy we would only want the announcements to be done when invoked using any of the switching layout/IME keys, and not announced otherwise.

@fatima, I think Mick recently changed some of the programming logic in that area of the code, can you please try to reproduce the issue and provide a log file, (input/output).

steps:

Please make a file (and attach) containing few lines of arabic, a few lines in english, a few lines in arabic. try to have 5 or more alternating blocks of arabic and english.

log 1:
from line 1, do a sayall, until the end of the document.
and attach log.

log 2:
from line 1, use down arrow, downarrow until we reach the end of the document.

Also attach this second log.

Thanks.

Changed 2 years ago by fatma.mehanna

Changed 2 years ago by fatma.mehanna

comment:6 Changed 2 years ago by fatma.mehanna

hi,
i used the latest snapshot, 5526, and the problem still exists.
unfortunately, it became worse.
before, we were hearing only one keyboard layout during reading, i.e, "arabic" or "english us".
now, we hear the 2 keyboard layouts during reading the same line.
moreover, we also started to hear additional information, such as "arabic -arabic egypt 101"
i attached 2 log files following mesar instructions:
1 for reading line by line.
2 for reading with sayAll command.
i reproduced it using wordpad.
thanks for your efforts.

comment:7 in reply to: ↑ 5 Changed 2 years ago by jteh

Replying to MHameed:

If we add this, they will never be announced if disabled; i.e. even when you press keys to manually switch layouts.

Idealy we would only want the announcements to be done when invoked using any of the switching layout/IME keys, and not announced otherwise.

That's pretty ugly. It'd mean we'd need to know and bind all possible switching methods, remembering that some layouts introduce their own. Also, what if the system switches for some other reason? What if the user switches to a different application where the input language/layout was set to something else? What if the user assumed the layout/language had changed but it really hadn't and started typing in the wrong language? The correct behaviour really is to respond to these changes automatically. So, the best we can do is provide an option to disable them altogether. This way, the user very clearly understands what they're getting.

comment:8 Changed 2 years ago by jteh

  • Milestone set to 2012.3

comment:9 follow-up: Changed 2 years ago by mdcurran

Firstly its worth noting that when moving with the arrow keys, the layout change is announced after the text. This means it does not interrupt the text, but its also good as it clearly alerts you to the fact that the input locale has really changed based on where the caret is.
I do agree though that having these layout changes announced during sayAll is inappropriate and also confusing.

Therefore, I would like to propose that we do not announce layout changes while a sayAll is running. (we don't have a way of doing this yet, but I don't think it would be that tricky).

I don't believe we should have a global setting for disabling all layout change announcements as (if I'm correct) users who type in both Arabic and English would be constantly switching, and therefore would like announcements when this happens. I would think that both switching layouts when typing, and reading documents with both Arabic and English with sayAll/arrows would be pretty much the same user scenario. However, if someone can suggest that there would be a group of people happy to receive no announcements both either for manual layout changes or layout changes due to caret navigation, then we can add the setting.

comment:10 Changed 2 years ago by mdcurran

Changeset:main,5538 no longer announces keyboard layout changes while a sayAll is in progress. No matter what is decided about the other setting, I think this is still needed anyway.

comment:11 in reply to: ↑ 9 Changed 2 years ago by MHameed

Replying to mdcurran:

I don't believe we should have a global setting for disabling all layout change announcements as (if I'm correct) users who type in both Arabic and English would be constantly switching, and therefore would like announcements when this happens.

this is true, but we have to consider this option only as the last resort.

The feedback is that when they are in edit fields and move between english/arabic, they expect the layout to change, and therefore nvda is being too verbose/distracting.

I havent looked at the code, but maybe something like:

I assume the layout is an event and we are just listening for it.

if cursorPosBeforeEvent == cursorPosAfterEvent:

# looks like keyboard triggered, so speak it.
ui.message("layout %s" %newLayout)

dont know how much of a hack this is.

Thanks for the sayall fix.

comment:12 Changed 2 years ago by fatma.mehanna

hi,
thanks very much for fixing this issue with the say all command.
we really appreciate that, but as mesar said, the user knows that he/she is typing arabic or english. there are some ways for him/her to know that, among these is enabling the speaking of typed characters or by pressing the key board layout changing shortcut.
if you don't want to implement the option, so disable this feature and as i mentioned above there are ways by which the user can know which keyboard layout he/she uses.
thanks.

comment:13 follow-up: Changed 2 years ago by jteh

I'm pretty sure we'd receive the layout change event asynchronously from the cursor position movement, so we can't use the cursor position info to determine whether we speak it.

I still don't follow the problem here. The layout is spoken after the text, so it's not actually an obstruction to efficiency. It's also more reliable than guessing whether the layout changed, which may not always happen as expected; e.g. if there are more than just these two layouts installed.

comment:14 Changed 2 years ago by jteh

  • Milestone changed from 2012.3 to 2013.1

If an option to disable all layout reporting is what you want (which I still think is a very bad idea, particularly if you have more than two layouts), this will have to be deferred to 2013.1.

comment:15 Changed 20 months ago by mdcurran

  • Resolution set to wontfix
  • Status changed from new to closed

Marking as wontfix for now re comment 13. Feel free to debate this further though.

comment:16 in reply to: ↑ 13 Changed 19 months ago by MHameed

Replying to jteh:

I'm pretty sure we'd receive the layout change event asynchronously from the cursor position movement, so we can't use the cursor position info to determine whether we speak it.

Can you please check if its indeed being received asynchronously?

I still don't follow the problem here. The layout is spoken after the text, so it's not actually an obstruction to efficiency.

It is an obstruction to flow, for example when proof reading a document.

Sorry for reopening, users absolutely insistant that we should try to find a reasonable solution for this, I'm just the messenger.

comment:17 Changed 19 months ago by MHameed

  • Resolution wontfix deleted
  • Status changed from closed to reopened

comment:18 Changed 19 months ago by ruslan

Hi!
It is very uncomfortable when nvda anounces keyboard layout while reading multilingual text.
This problem occurs in wordpad while reading arabic russian and english text at the same time.
Thanks for support and understanding.
ruslan

comment:19 Changed 19 months ago by mdcurran

Seriously, all we can do is add an option to not announce changes whether they are automatic or through keyboard input. There is no way to detect the difference as there are just too many different ways to change the layout.
If this is suitable I will add the option.

comment:20 Changed 19 months ago by ruslan

Hi mdcurran!
It would be suitable really, if you will add the option that allows switching anoncement of keyboard layout.
Thank you very much!

comment:21 Changed 19 months ago by fatma.mehanna

if this is the only solution for solving this issue, then the option should be added till NVDA can be customizable, so we can configure it according to each application.

comment:22 Changed 19 months ago by fatma.mehanna

hi,
I noticed during my descussion with the other multi lingual users about this ticket that they don't face this problem. We found out that the reporting of keyboard layout change happens because arabic is an rtl language, and most of the multi lingual users use only left to right languages, so nvda reports the layout change because it sees 2different writing directions.
i reported this piece of information in case it can be of help.

comment:23 Changed 19 months ago by jteh

  • Milestone changed from 2013.1 to 2013.2

As far as I know, it's not just that we don't report the layout change. It actually doesn't change automatically when navigating through text written in other languages. This seems to be unique to RTL layouts. NVDA isn't doing anything different here.

At any rate, it's too late to get this fixed for 2013.1.

comment:24 Changed 15 months ago by jteh

  • Milestone changed from 2013.2 to near-term
Note: See TracTickets for help on using tickets.