RE: Ed-sharp bug report

  • From: "Nathaniel Schmidt" <nathanieljsch@xxxxxxxxxxxxxx>
  • To: <programmingblind@xxxxxxxxxxxxx>
  • Date: Mon, 6 Dec 2010 14:28:26 +1100

Hi,

When using JAWS 11 and 12 with windows 7, I have found that the title of the
edSharp window does not speak when I alt-tab to it, or if I launch it from
the desktop shortcut.
When I had windows XP, this was not an issue.    As Tyler suggested, adding
SayString(GetAppTitle()) to the end of the code in the AutoStartEvent
function helped with this.

Nathaniel Schmidt

-----Original Message-----
From: programmingblind-bounce@xxxxxxxxxxxxx
[mailto:programmingblind-bounce@xxxxxxxxxxxxx] On Behalf Of Jamal Mazrui
Sent: Monday, 6 December 2010 9:11 AM
To: programmingblind@xxxxxxxxxxxxx
Cc: Sina Bahram
Subject: Re: Ed-sharp bug report

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



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

Other related posts: