Why don't you post this to Script Central?

 

From: Robert Englebretson [mailto:[email protected]] 
Sent: Saturday, December 05, 2009 1:07 PM
To: [email protected]
Subject: A working alpha of a braille AutoScroll script

 

Dear All,

 

I'm a newbie to Window-Eyes--considering making the switch since both of my
braille displays (a HandyTech Braille Wave, and a GWMicro SyncBraille 20)
have been 'orphaned' by the company who makes the screen reader I've been
using in one form or another for the past two decades.  One of the things I
will miss from the old screen reader is  the AutoAdvance feature, which
allows users to automatically read through text using a braille display
without having to press the scroll key thousands of times a day. For those
of us who use a VoiceSense and SyncBraille, this is a feature built in to
VoiceSense, but it doesn't seem to have made  its way into Window-Eyes yet.
So, I decided to take a day last weekend and write a script to do this.  It
may be a bit of a  kludge, but it works perfectly for what I need it to
do--and  it was great fun to dig into Window-Eyes scripting and make
something useful that works.  I'm not really interested in developing it any
further, so I thought I'd pass it along to those of you who have more
script-writing experience and more time than I do.  Hopefully someone on
this list will be interested in developing it further,and packaging it up to
post on Script-Central.  I unfortunately don't have the time.  but I'm happy
with it, it's worked fine for the last week without crashing or causing any
problems,  and it does exactly what I need.

 

I'll include the script, below, and then afterwards I'll include a few notes
and comments about ways I think it could be improved. I've used comment
lines fairly liberally to document how it works and what each block of code
does, so it should be pretty transparent.  Basically, autoscroll initiates
with ctrl-shift-q on the keyboard, and is terminated by the ESC key.
Spacebar speeds up the scrolling in tenth-of-a-second increments, and
backspace 
slows it down correspondingly.  Note that most  people will want to have
their end-of-line notification dings turned off in the WE Braille menu;
also, if quick messages are enabled, they need to be dismissed with a
routing button (this includes the announcements of scroll-time changes
spoken by the script, too). This works very "jerkily" in Word (for reasons
I'll 
comment on at the end  of this message), but works great in reading web
pages, e-mail messages,  and in wordpad where I've used it to read a book
from Bookshare.  Here's the script: (hopefully the mail client won't
introduce spurious line-breaks).

 

' Begin Braille Auto-Scroll Script
' Alpha version written by Robert Englebretson
' Please feel free to modify, improve, and redistribute
'
' Scrolls the braille display at a regular time interval 
' Initiated by Control-Shift-q
' Terminated by pressing the escape key
' Defaults to a rate of scrolling once every 2.2 seconds (good for a 40-cell
display)
' Spacebar speeds up the scrolling by increments of one-tenth of a second
' Backspace slows down the scrolling by increments of one-tenth of a second
' New scroll-rate is maintained for the rest of the WE session or until
script is reloaded
' Other keypresses allowed through as normal (b/c arrows, navigation keys,
and browse-mode keys are still useful)
'
' define variables
Dim BrailleAutoScrollHotkey
Dim OnStopKey
Dim ScrollDelay
'
' Setup control-shift-q to start scrolling
Set BrailleAutoScrollHotkey = Keyboard.RegisterHotkey("Control-Shift-q",
"BrailleAutoScroll")
'
' Sets default scroll delay value in MS (adequate for a 40-cell display)
ScrollDelay = 2200
'
' Define the autoscroll subroutine
Sub BrailleAutoScroll()
' Clears the escape-key press from previous session
OnStopKey = False
' Connects to the keyboard keypress and key-release events
Press = ConnectEvent(Keyboard, "OnKeyDown", "Keypress")
Rel = ConnectEvent(Keyboard, "OnKeyUp", "KeyRel")
' Set up the auto-scroll loop 
Do while OnStopKey = false
Sleep ScrollDelay
ExecuteBrailleHotkey bhkScrollBrailleRight
Loop
' Disconnects all events after loop is terminated with esc
Disconnect Press
Disconnect Rel
Speak "AutoScroll Stopped."
End Sub
'
' Set up function for disposition of KeyDown events during scrolling
Function KeyPress(VKCode, Modifiers)
' Terminates the autoscroll loop if esc-key is pressed
If VKCode = 27 then
OnStopKey = true
Keypress = KDDiscard
Exit function
End if
' Increases scroll speed by 0.1 seconds if spacebar is pressed
If VKCode = 32 then
ScrollDelay = ScrollDelay-100
Keypress = KDDiscard
Speak ScrollDelay/1000 & " seconds."
Exit function
End if
' Decreases scroll speed by 0.1 seconds if backspace key is pressed
If VKCode = 8 then
ScrollDelay = ScrollDelay+100
Keypress = KDDiscard
Speak ScrollDelay/1000 & " seconds."
Exit function
End if
End function
'
' Disposition of corresponding KeyUp events 
Function KeyRel(VKCode, Modifiers)
If VKCode = 27 then
KeyRel = KDDiscard
Exit function
End if
If VKCode = 32 then
KeyRel = KDDiscard
Exit function
End if
If VKCode = 8 then
KeyRel = KDDiscard
Exit function
End if
End function
'
' End Braille Auto-Scroll Script

 

Here are a few comments and suggestions for  anyone who might want to work
on this further:

 

(1) This doesn't work well in Microsoft Word 2007, at all.  But then again I
don't find that Window-Eyes braille works well  in Word either. The problem
is  at the ends of lines,there is a significant lag-time between when the
advance button is  pressed and when the display actually scrolls.  I don't
know why this is,or if it's unique to my system--I'd appreciate feedback
from other users on this. In any case, as a result of the lag in Word when
reaching line-endings, the autoscroll script doesn't scroll at a regular
interval at those points.   It acts a bit like an arrhythmic heartbeat...

(2) If I were to develop this script further, it would be nice if the
routing buttons on the display would stop the script, *and* route the cursor
to the correct cell.

(3) The script should be made to stop once the cursor stops  moving (i.e.
when the end of a file is reached.)   Now it just sits and dings until we
press escape.

(4) It  would be nice to be able to define items in the Braille Hotkey menu
to do all of the script functions, instead of having to be tied to the
keyboard.

(5) When the autoscroll is fast (for example with my SyncBraille 20 I set
the sleep time to 1.1 seconds), the announcements of time-change are not
spoken (e.g. when space or backspace is pressed for the script).  I suspect
the problem is that these are being interrupted by some sort of  program
event--and so it works well when scrolling is slower than about 2 seconds,
but not when it is faster.  I haven't been able to determine what is
interrupting speech, or how to force the message to speak regardless.

(6) Now this is a real pie-in-the-sky wish--but it would be really nice if
there were a way to determine exactly how much text is being sent to the
display on each chunk, and for the scrolltime to automatically adjust itself
accordingly. What I mean is:  this script works great  when the whole
display is full. 2.2 seconds is exactly the right amount of time (for me) to
thoroughly read 40 cells. But if only,say, 10 cells of the display have text
on them, then I have to  wait almost 1.5 seconds for the display to scroll
itself--or I have to hit the advance button manually.  It would be nice, for
example, if the script could determine that only 10 cells are showing, and
thus scroll that particular display-full after only one-fourth the usual
time delay.

(7) This probably should be set not to  work if there's no braille display
connected.

 

Well,have fun!  I find this quite useful, and I suspect others will too--but
I don't have the time or expertise to turn this into something I would feel
good about packaging and making publicly available.  I'd definitely be
interested in receiving any updated/improved versions that any of you come
up with though.

 

Best,
--Robert Englebretson

******************************************************************
     Dr. Robert Englebretson
     Dept. of Linguistics, MS23
     Rice University
     6100 Main St.
     Houston, TX 77005-1892
     Phone: 713 348-4776
     E-mail: [email protected]
     http://www.ruf.rice.edu/~reng

Reply via email to