Re: Ed-sharp bug report

  • From: Jamal Mazrui <empower@xxxxxxxxx>
  • To: programmingblind@xxxxxxxxxxxxx
  • Date: Sun, 05 Dec 2010 17:10:51 -0500

I meant to also address the Alt+Tab issue. I do recall some .NET programs not announcing their title as consistently when Alt+Tab is pressed. I just tried with JAWS 10 and Windows Vista, however, and found that the EdSharp window title was announced when cycling among active windows with this keystroke. I wonder if this is related to the combination of JAWS and Windows versions. I invite feedback on this from other users of JAWS or different screen readers, in the hope that we can identify a pattern.

Jamal

On 12/5/2010 5:04 PM, Jamal Mazrui wrote:
Excellent feedback -- thanks, Sina! I appreciate your taking the time to
write with specific observations and ideas. I have saved your message
for further review. Let me respond initially as follows.

Indeed, the EdSharp installer does not currently ask whether to install
a destop shortcut. The choice is only whether to add a system-wide
hotkey to that shortcut of Alt+Control+E. Unfortunately, I have not
found a way to make that happen on every Windows version, seemingly for
security-related reasons. So, even if I accept the default hotkey on
Windows Vista, it will not actually be enabled until I press Alt+Enter
on the desktop to edit its properties, and instruct the shortcut to run
as administrator. The hotkey is not part of the Start Menu shortcut. The
reasoning is that it is minimal cost, except for one item in a list, to
add the shortcut to the list of desktop or Sart Menu items, but the
hotkey should be confirmed so that it does not risk replacing an
existing global hotkey. There is no use of the Quick Launch bar by the
installer.

Neither EdSharp, via the JAWS API, nor the JAWS scripts for EdSharp,
intervene in menu processing in ways that could explain the delays you
experience, as far as I know. Sorry, but I do not know the cause, other
than JAWS processing of .NET menus (which are not Win32 menus). What
Windows version are you using? 32 or 64 bit?

I will review trigger keys for menu items. In general (with a few
exceptions), I find such trigger letters to be of little value to users.
In general, I think users either navigate to the menu item of interest
and press Enter, or alternatively, learn the direct, accelerator key
combination, and press that instead, bypassing the menu system entirely.
I am generalizing, and appreciate your points in a systematic analysis
for unique trigger letters in menus.

I have tried to completely hide Microsoft Word while invoking its
spellchecker, alas, without success so far. I have closely studied the
COM object documentation. My code sets properties to make Word
invisible. I changed calls to VB, which before C# 4.0, considerably
worked more harmoniously with COM than C#. If anyone can help me tighten
that code, I would appreciate the contribution.

I will look at refining speech around the Undo command, and other speech
suggestions you mention.

Jamal

On 12/5/2010 4:41 PM, Sina Bahram wrote:
Jamal,

I installed ed-sharp, latest version, today, and I ran into the
following issues within the first few minutes of use. I just wanted
to report them in hopes of making this better for other users.

#1: installer doesn't ask about shortcuts

The installer didn't let me choose, like most do, whether I want an
icon on my desktop. Can this be added?

It also concerned me about whether it was putting something in my
quick launch. I hope it's not, as I always uncheck this option
from every installer I come across, but it would be nice to have that
standard installer screen, if possible.

I simply deleted the icon, after I installed the program, but it would
be nice for it not to get created in the first place.

#2: control+alt+e keystroke doesn't work, and in fact isn't assigned.

So I was told that control+alt+E launches ed-sharp by the installer,
but when I pressed it after the install was done, nothing
happened. I tried it several times, and then I actually investigated
the "launch ed-sharp" icon in the start-menu, and found that
the launch keystroke field was empty; thus, that made sense why it
didn't work. After I manually added control+alt+e to that field,
it of course started working.

#3: the elevate command always updates

When in ed-sharp, I pressed f11 just to verify I was at the latest
version, but apparently I am not, or the elevate command is
broken because it said comparing to server, and then it offered me a
download of the exact version I just installed. In other words,
it never bothered telling me that the version on my computer and the
server are the same, and it also makes the user think that they
aren't, since it offers a download.

I would suggest maybe changing the button or message to reinstall or
something like that, if the versions are identical, so that the
user doesn't think they are at an older version?

#4: delay in file menus when using jaws

I installed the jaws scripts, as I had no reason not to, using the
last page of the installer, and they compiled correctly; however,
when in ed-sharp, the menu bar is a little laggy. What I mean by this
is that if I hit alt, and then arrow through file, edit,
delete, navigate, etc, etc ... It's a little slow. I'm guessing that
this is possibly because of the JFWAPI being used or something
like that; however, it's kind of irritating, especially if you have
your jaws set to decently fast; for example, I listen to
eloquence at 80% speed, as defined by the jaws verbosity box, and
there's about an extra 300 to 600 millisecond delay, as if jaws is
being instructed to speak, as opposed to doing it itself. My question
would be, A. can this be fixed/sped up? And B. if it's just a
file menu, why is the JFWAPI being used? That it of course assumes
that it even is being used, and the delay isn't caused by
something else of course.

Note, this delay is especially noticeable when hitting keystrokes like
alt+f or alt+e to bring up menus. Almost to the point where
you think you hit the keystroke wrong or something, and then you
realize that the menu is coming up, but just slowly.

#5: alt+tabbing to ed-sharp doesn't announce the title

When you alt+tab to almost any other application, jaws reads the title
of the window for you, letting you know two things. It let's
you know that the alt+tab successfully completed and that focus is on
that window, and by announcing the window title, it gives you
whatever information the application developer wishes to convey in
their title bar.

This doesn't happen with ed-sharp. When I alt+tab to it, I get silence
... Jaws doesn't make a peep. This is a bit jarring.

#6: in the file menu, several characters map to different choices:

In the file menu, I can hit o to open, open in other format, or open
again.

Unfortunately, o just activates open, which is the correct behavior
according to the underlying technology being used for the file
menu. Could the other two options be assigned different menu
accelerators? Their menu shortcuts are of course unique, but their
accelerators are the same.

This is true in other places too, but even in the file menu, you can
see it with set favorite and save both being mapped to s.

Note: what I've seen adopted as official policy by some UI developers
is that you start with the first letter, then move your way
through the word for subsequent accelerators. Some folks go further
and state that vowels are excluded from this, although I
personally disagree with that approach and think all characters are
fair game; for example, o for open makes perfect sense, although
p for "open again" doesn't because p should map to print, so you have
an exclusion tree whereby the first letter of every menu item
is put into a set, which by definition is a unique list, and then this
set is used as an exclusion list as you step through the
characters of the duplicate menu item.

One side note, another popular approach, of which I do tend to be a
fan of, is to use the first letter of subsequent words, before
going back for second and third letters of the original word. E.G.
"save as" maps to 'a'.

The algorithm for this is rather straight forward, with one huge
caveat (discussed below), if you think about it, and goes like
this.

I have the following six menu items.

New
Save
Save as
Open
Open recent
Exit

First I take the six characters and put them into a list, which is
technically called a bag:

bag(n, s, s, o, o, e)

And then I turn that bag into a set, like this:

set = unique(bag)

So I get:

set(n, s, o, e)

And then I have a set of characters I've used as accelerators, which
starts out empty:

accelerators()

Now, I add characters to that list, for each menu item, being careful
to disallow duplicates, which closure property I get for free
as a result of using a set instead of a bag, like so:

New gives us n

So we have:

accelerators(n)

Open gives us o

So we have

accelerators(n, o)

Open again gives us o, but wait, o already exists in accellerators, so
we go to the first character of the next word which gives us
an 'a':
// see the cavviot section for why 'a' is a bad choice
// the correct choice here is 'g' because 'g' comes after 'a' in the
word "again"

accelerators(n, o, g)

Then we get s for save, and so on

accelerators(n, o, g, s)

Then "save as" gives us 'a'

accelerators(n, o, g, s, a)

And then, finally, exit gives us 'e'
// again, see the cavviot section for why 'e' is a bad choice
// going with x instead

accelerators(n, o, g, s, a, x)

And of course accellerators == unique(accellerators); thus proving
it's in fact a set, and not a bag.

*** Huge Haunking Caveat Section: ***

Now, the reason that this algorithm unfortunately can't be programmed
in, and has to really be done by hand, or at least whose
output needs to be revised by hand is that there are idioms users have
come to expect. As is the case with all things in computer
science, humans get in the way of elegant algorithms, almost always.

So, for example, we assigned 'a' to save again, but this really isn't
what we want. We really want to assign it 'g', because users
have come to expect that 'a' is always save as in a file menu, just
like how s is save, and how o is open.

Thus, if one is prone to think about things in an algorithmic point of
view, just imagine a 2-ply deep file menu priority tree
where the semantics of these common idioms are stored; such as, under
the file node: 'a' maps to "save as", 'o' maps to "open", and
so on. Then use the same algorithm as above, but use the idiom tree as
a higher priority exclusion list than the accellerators set,
indexing into the idiom tree with the menu item name, of course.

To be fair, the above is more of a heuristic than an algorithm, but I
do find that it works super well, and takes all the guess work
out of picking accelerators in menus.

#7: spell check issues

When I hit f7 for spell check, I get some rather odd behavior. It
initializes Microsoft word, GUI and all, in the background. I
understand why it does this, because, why reimplement/reinvent spell
check, when Microsoft word exists right there on the user's
machine; however, can you just use word as a com object without
invoking the UI, just like that code snippet I sent out a really
long time ago about how to use Visual Studio 2005 without invoking the
UI! This brings up a further question of whether the spell
check functionality is able to be used via com, without actually
invoking the main MSWord object at all. Is that possible?

Moving on. I perform a spell check, and then I'm never told that spell
check is over. I don't even really know I'm back in my
document in ed-sharp, probably because of the earlier bug where the
title isn't read out, but what's even more frustrating is that
spell-check didn't clean up after itself, and I have this empty
Microsoft word document in the background.

Also, sometimes, although I can't replicate this particular issue on
demand, so sorry about that, but sometimes, it focuses said
empty Microsoft word document, instead of ed-sharp, after the
spell-check is complete.

#8: undo doesn't announce selection

Would it be possible for undo to announce if it's undone action
results in selected text?

For example, write a sentence, and then highlight that sentence and
hit the delete key. Now hit control+z for undo. It would be nice
if ed-sharp told you that the sentence that was brought back from the
great bit bucket in the sky was highlighted, simply by saying
the word selected before reading the sentence, as it does now.

There are some other things as well, but the number 8 is a nice binary
number, so I wanted to stop there.

Thanks much, and happy hacking.

Take care,
Sina

__________
View the list's information and change your settings at
//www.freelists.org/list/programmingblind

__________
View the list's information and change your settings at
//www.freelists.org/list/programmingblind

__________
View the list's information and change your settings at //www.freelists.org/list/programmingblind

Other related posts: