WWDC2004 Session 423
Transcript
Kind: captions
Language: en
ladies and gentlemen please welcome
managers spoken in her
engineering Eric see more good morning
so before I get started I just want to
thank everybody for coming today welcome
to day 3 of WWDC I want to extend a
special thank you so you had a lot of
sessions that you could have attended
this morning and you chose this one and
the accessibility team at Apple which is
quite cross functional covers lots of
organizations is very very committed to
what we're doing and we realize that
it's a commitment for third parties to
add accessibility to their applications
so just the fact that you're here is a
tremendous statement to us about how
much you care about what we're all doing
here so I appreciate it we all
appreciate it and if there's one thing
that if if I could impart one thing to
anybody about accessibility it's the
importance of doing it in your
application I can talk about spoken
interface I can talk about our other
accessibility capabilities Mac os10 but
at the end of the day all of us adding
accessibility capability into our
application is really really important
and we should look at it is just another
detail of writing software in the 21st
century so we localize our applications
we nitpick the graphical details of
applications we accessorize their
applications we make them accessible
it's just part of doing business that's
the biggest takeaway that I think is
important to tell everybody outside of
this room so let's get started I'm going
to cover for things today I'm going to
talk about Apple's News spoke and
interface of course then I'm going to go
into a few accessibility basics and its
really going to scratch the surface of
the accessibility API is what you've
been shipping in Mac OS 10 for several
years then I'm going to talk about a few
things that you can do that are new and
tiger part of the accessibility API is
that will make your application to
really great accessibility citizens work
really well with the new spoken
interface and other accessibility
clients that exist and then finally
we're going to cover some tools which
will help you accomplish that so
accessibility on Mac OS 10 pretty good
there are several features some of you
have probably already use them things
like stick
keys and zooming the screen and you know
flash the screen when there's an audible
alert lots of accessibility in
Machynlleth 10 with Tiger we're going to
be bundling a major new feature and that
a features of course spoken interface
now I'm intentionally pumping up the
font here in this presentation because
spoken interface is a major new feature
it's a significant undertaking for us
and it eclipses several of the features
that are already on here in some cases
they're going to superset functionality
and and we're going to be restructuring
some things for its release so what is
spoken interface well it's screen access
software for Mac OS 10 sometimes screen
access software fact more often than not
it's referred to as screen reader
software and screen reader software is
basically software that makes your
computer helps your computer talk to you
provide information about what's going
on on the screen provide information as
a result of your user actions it gives
you the ability to control your
environment just with your keyboard and
it basically makes it so you can use use
your computer most importantly without a
monitor but also without a mouse
potentially so one thing it's important
to note is spoken interface gotta name
this week and that name is voiceover if
you go to our website and look at the I
think it's the preview button under Mac
os10 to see with a preview of tiger
you're going to see a whole bunch of
features that we're adding for Tiger and
very prominently displayed quite proud I
am of voiceover six icons down so you
can read all about it there's an
accessibility website I'll reference it
at the end so I beg your forgiveness if
we're going to probably a lot this
morning say spoken interface or
sometimes even screen reader or screen
access and sometimes voiceover and so
just assume they all equate they're all
the same thing so who are our target
target users for voiceover well clearly
our target users are individual to our
blind individuals with low vision and
quite frankly individuals with other
disabilities a lot of times screen
reader software adapts itself well to
various other disabilities but this is
an interesting piece of software it's
interesting for us as authors
of of an accessibility solution and
sometimes perhaps interesting to you who
are creating applications we're
typically users of our own applications
most of us are you know if in Apple's
case we're creating mail we use mail
every day for creating ichat we use
ichat every day if we create a developer
tools same thing we use our application
but this is a case for some of us on the
engineering team won't use this every
day to accomplish our daily work we
can't live and breathe it and feel it
and so it deserves a closer look who is
the customer of this product and so we
we thought it wise to take a closer look
and when you look closely clearly
individuals who have a very tangible
need to use this product blind
individuals so I have a couple of
pictures here some students in school
maybe these are adults working in a
professional environment too but it's
more than just individuals it's
individuals and their peers right so for
every student in a school who who's
blind or has low vision that's student
he or she has the 20 or 30 peers who are
cited who they want to work with they
want to collaborate with and that's part
of learning experience and the same
thing is true of coworkers how many of
us work in a vacuum by ourselves without
contacting or talking with anybody and
this is also true of parents and
teachers or bosses or employees so the
bottom line is is our target user for
this is everybody and it's it's
relationship based people don't just
work in a vacuum and this is especially
important for screen reader software
because feedback that we've gotten and
also intuition that we've also derived
as we've been solving this problem is
screen readers are really hard to figure
out if you're cited it's hard to figure
out what's happening on somebody who's
using a screen reader system it's just
difficult and so we're trying to build
the concept of collaboration into this
product and so I present some design
goals to you hear some user design goals
first one is collaboration so along the
way you're going to notice that we're
going to promote and talk about the
concept of building a product that all
of us can use both sided and non cited
so that we can collaborate obviously we
want to satisfy all the main criteria of
good
screen reader software quick orientation
unrestricted navigation make a pleasant
environment for the user and then for
the system smokin interface voiceover
fully integrated into Mac OS 10 now this
is really important from a technical
perspective it's important for all sorts
of reasons but what it's the biggest
thing that it does is it allows us to
make it available to every aspect of the
system experience so not just after the
users logged in running your
applications or our applications but
during the install experience during the
first time they run their mac and
they're going through the experience of
setting up their computer it needs to be
there at every step of the way and so we
that's just a big piece of this so also
we're leveraging is the existing
accessibility API is I'm going to go
into the basics of that in just a second
and it has to be really fast so the last
thing we want to do is implement a
solution that slows down your
applications if the user wants to use
voiceover with your application your
application should be just as snappy as
it ever was and that's always been a
goal of the acceptability api's if you
go into those sessions in past years and
that's also a goal of spoken interface
to not be intrusive now what this the
sum of this is we want to deliver the
Mac experience for users of a screen
reader we don't just want to make the
system talk we don't just want to do the
bare the bare essentials we want to make
this an incredible experience for
everybody who might be using this
affected by it making a purchasing
decision based on this really really
really really important that this is an
apple quality product so spoken
interface voiceover built-in to Mac os10
if you go to your universal access
preferences panel you'll see a way that
turn it on you'll be able to adjust
settings in there change some of the
voices adjust pitch rate pitch of the
voice rates of the voice various
preferences options we also take
advantage of existing keyboard shortcuts
so we don't invent things new that are
already invented there are keyboard
shortcuts that are part of full keyboard
navigation in Mac OS 10 that have been
around for a couple of releases and
we're just going to leverage those now
speaking of the keyboard those who view
screen reader software know how how
important the cable
it is I guess that's an understatement
and so it deserves a little bit of a
discussion when you're using voiceover
you're going to spend a lot of time
using the keyboard and you're going to
spend a lot of time using the ctrl +
option keys which are used for
activation in other words if you want to
issue a command on your computer that
voiceover will interpret you'd hold the
ctrl + option key down and then do
something and then there are keys
designated for orientation tell me where
I am in my environment what's on the
screen how many apps are running right
and then there's also navigation I want
to move around using using get getting
to every possible thing that might be on
the screen now a couple of things about
this number one is well several things
so first is there are lots of keyboard
combinations to Bruce commands in a
screen reader this one is no exception
to help improve the learning experience
for somebody who's coming to grips with
this product to get to know it we
provide two main features we provide a
smart menu which is audible you
basically using spoke and interface
you're moving around you I have no idea
what to do at this point what do I do so
you hit one memorable key combination
control option f5 and you you're
presented with an audible menu and it
will be context-sensitive it will have
only the things in it that you could do
at that given point in time so if you're
in a text field there are lots of things
you can do in a text field because you
can select tech and that you can it's a
very it's a more complicated element but
if you're on top of a button there might
be only one or two things you can do you
can press it might be able to read its
title things like that so the smart menu
helps out a lot and then of course
there's help always the same same
consistent way to get help you also
might notice that we're rooting our
modifier keys off the same Keys other
screen reader products because of
perhaps lower integration into the
operating system itself route themselves
off to several keys around the keyboard
so a couple more things to mention first
is we realize that the keyboard is
overloaded if you design an app that has
lots of keyboard combinations to find
you know that already even before spoken
interface comes along there Kate there
are occasions where keyboard
combinations which Apple choose is
sometimes conflicted that ship in your
application spoke an interface again add
to that so we're designing some
techniques to allow the user
to work around that effectively no to
specify when am I going to issue a
voiceover command what am I going to
issue a command that might want to go
directly to your application so we're
solving that problem and the other big
piece of feedback that we've gotten is
screen reader software is not terribly
well designed typically for notebook
keyboards because of the amount of keys
that you want to use sometimes they take
advantage of the number number pad or
some of the keys that are hard to reach
on a notebook keyboard so we're also
designing this for a notebook keyboard
we're using this as the least common
denominator so that we don't come up
with an environment that once you go
mobile is really difficult to use okay
so that's the keyboard now to talk about
a screen reader we also have to talk
about navigation because we need to
provide a way to get around the
environment that even the mouse and the
keyboard can't get to so when we
navigate especially sighted users when
they navigate all of us take advantage
of two main things the keyboard cursor
and the mouse cursor and they're both
very tangible if we're cited we can see
them if we're not relying on our site
spoken interface voiceover provides
audible feedback as to where those
things are if we want it but there's
more than that because as sighted users
we take advantage of our eyes right we
have the ability to glance look around
our screen and if you if you're only
feedback is sound and all you're
listening to is where's the mouth or
where's the cursor you don't have the
ability to look at the time or to read
an ichat that just came in while you
happen to be typing an email message and
we want to solve that problem so as part
of voiceover we're introducing a new
cursor which is the voice-over cursor
and the voice-over cursor is separate
and distinct from the other two and its
job is to allow you to get to everything
in the screen so here I've got a picture
of voiceover cursor moving over a user
interface and it's moving from button to
button now the voice-over cursor of
course isn't just visual or it wouldn't
be as much use could you turn on sound
for
at the presentation machine please try
it again okay so when the voice-over
cursor moves over things it also tells
you where it is comedy colors button see
that last two texts now here's a case
where the voice-over cursor moved to an
item which you can't get to it with any
other means using keyboard navigation or
mouth because it's just static text it's
the blob of pixels sitting on the screen
somewhere so they're not unattainable so
the voice-over cursors goal is to get to
everything so in this case it got to
what appears to me based on my boot
money audible feedback it appears to be
a prompt and Mail that tells me what
might be coming next to text and now I'm
on top of the text field so before it
told me it was text kind of told me it
was a static thing I couldn't edit it
but it's text and that it told me what
the text field which means is editable
now what this does is it loves me build
a mental picture in my mind of my user
interface and navigate to every aspect
of my interface not just the things that
full keyboard navigation can get me too
so it helps me learn and discover so
this concept gets a little heady so the
best way to talk about this is to
introduce Rick's fabric on stage to give
you a demonstration of voiceover so Rick
thank you Eric good morning everybody as
Eric mentioned my name is Rick fabric
and I'm an engineer on the spoken
interface team the voiceover King and
for the next 10 or 15 minutes I will be
going over the general usage of the
spoken interface so that you can use it
as a tool to test a level of
accessibility in your applications now
before I start there's two things that I
want you to know the first is that
throughout the demo I will not be using
the mouse in fact I'm going to unplug it
here's the mouse everything I'm going to
be doing will be through the keyboard
only the second thing is that i am going
to be going i'm going to be using a lot
of voiceover command so to save time i'm
not going to be telling you what the
actual key strokes are but Eric 1 over a
couple of them and you can find out what
the rest of them are through
documentation
alright so orientation one of the
features Eric mentioned that screen
readers need to provide is an easy way
for users to get oriented with the state
of their system and I'm going to go over
some of that right now now you may be
able to see the screen and notice that
it's blank and that's intentional a
great percentage of the spoken interface
users are going to be blind so I want to
give you a better sense of how they're
going to be using your applications with
the spoken interface what I'm using here
is a test tool that we call the screen
curtain and all it does is it dims the
screen so that you won't get any more
information than your users will that
gives you a better chance of finding
holes in your accessibility all right so
let's try to as an example let's say a
user who's blind just sits down in front
of the computer they can't see the
screen and they need to find out what's
going on where they are on the system so
it's a few voiceover commands they can
get some useful information so let's try
that with one command we get this to
expect to find running applications so
text edit is active and there are five
running applications with another
command to dwindle accessibility
developer the active window is
accessibility development and with
another command we get this text editor
house keys were so impressed a text
editor has keyboard focus so a three
commands i found out that i'm editing a
text edit document called accessibility
development all right so I've gotten to
the point where it's really difficult to
follow along if you're cited so what I'm
going to do is I'm going to bring up the
screen curtain see if you can see the
screen you can see you can tell it'll be
easier for you to follow along just
sleep on screen version all right now as
Eric mentioned before we have the
voice-over cursor so I'm going to bring
that up and make it easier for you to
find out where I am sure you finder all
right so if you can see the screen you
can tell that i am focused on the first
word in this document now i can move the
voice-over cursor either character by
character line by line where
by word sentence by sentence paragraph
by paragraph so i'm going to show you
here is moving word by word
accessibility just fine thank you No
okay done speed now character by
character counter space ph.d now what I
want you to notice is when I move over
to the letter M the pitch of the voice
will increase and what that does is it
lets you know that that letter is
capitalized so you don't need to be able
to see the character to know that you
have a capital letter so control options
lock the control option welcome people
ignore that control option mugdha
freedom please see okay let me do a
couple more letters please okay it's
just really a feature that you may find
useful as you're going along and you're
getting used to the voices is to be able
to speed up the rate of speech once you
get used to it they start to feel like
they're too slow so let me with another
command you can speed up the rate of
speech faster faster faster faster
faster better and let me give you an
example of what that would sound like
basically just like specific locations
do something 34 injury okay yeah so that
may be unintelligible to most of us but
for users who are used to screen readers
they typically do have the rate of
speech of that high now one of the
features that I was showing you here is
to be able to read the entire document
so if one command you can just have it
start reading everything alright so that
is let's say the user now wants to add
some information of this document so
what I'm going to do is move the
insertion point to the bottom and I'm
going to use the standard arrow keys now
there's two things I want you to know
here when I'm doing this as the
insertion point is moving from line to
line voiceover will be speaking out the
text on that line now I'm not going to
be waiting for it to finish the second I
know that I'm not where I want to be I
want to be able to just continue on so
I'm going to be interrupting voiceover
through this and in a couple places in
the rest of the demo the second thing is
that the voice-over cursor is going to
still be at the top of the dock
so it's important to make the
distinction that that is separate from
the insertion point as Eric mentioned
before so let me move down I wish you
was coming very friendly no well maybe
I'll decrease the rate of speech so that
we can understand it's saying available
to buy an external assistance system
that allows you to the protocol ok you
use lime so now I'm just going to start
entering text ppl space now as you
notice as I'm typing hit each key
voiceover will tell you what the letter
is being displayed now that can be
useful but if you're just typing along
that can get up too much information so
what I'm going to do is turn on a
feature that we call word echo and
instead of hearing each key each letter
you hear each word and you believed were
deco mode and let me put some more
information in here computer is a seven
Francisco period alright so now let's
say the user really wants that name San
Francisco to stand out so i'm going to
say i'm going to make it bold to do that
i'm going to go up to the menu bar and
i'm going to use the standard full
keyboard navigation key command ctrl f
to menu bar on 20 good stuff mu what's
new here is that you get the audible
feedback now I can aro around the menus
to extend it with file with submenu and
what's new and tiger if I know that
there is a menu in this case let's say
format I can just start typing format
and it will jump me directly to that
menu so our mess with submenu ok so let
me go into the menu for met Matthew fun
with submenu I know this is a submenu so
I'm going to go into a fun ma'am you
don't come out and be bold command be so
I'm going to select that oh I should
have selected text first so internet
from seven there we go hard oh I just
that right so and apparently that isn't
standing out quite enough so I'm going
to need to add some color to make it
more lively so I'm going to bring up
this color panel with a standard key
combination command shift see
true colors I can move keyboard focus to
that panel with Santa key combination
control f6 window colors onto button
voiceover will announce the window that
you moved to and the item at you move on
to and now i'm going to move the
voice-over cursor to the crayon color
picker color wheel of color sliders
color palettes image pallets coming on
button and select it press crowing on
button alright and opens a box of
crayons now well the color panel is
actually in my way I can't see my is my
text that I want to change so i can ask
voiceover to move the window now keep in
mind this is without the mouth moving
window step right step right step up
step step step right okay and now I can
move down and select the color that I
want to change the texture stop moving
window Murray strawberry combination
with strawberry breath strawberry okay I
like strawberry alright so there we go
that is reading text and editing text so
now let's say the user needs to check
their email so what I'm going to do is
move to the mail application and I'm
going to use the doc to do that I'm
going to use a standard key combination
ctrl f3 finder running application again
which new here is the audible feedback
I'm going to aro around some mail system
preferences Safari terminal after
extended male running application and
select it with the safe our mail
application window draft three graphs
alright so voiceover announces the
application and the name of the window
so I can navigate around hero among the
controls whether they're disabled or not
reply this results button doing discrete
bells button and that's important
because even though I can't interact
with that button right now I need to
know where it is so that when I do need
to interact with it I can go to it I can
move down to static text like Eric show
three messages dicks alright so
now the user needs to check their email
so what I'm going to do is I need to go
into this table select an email move out
down and into the the mail the body of
the mail now keep in mind for those who
can see all that requires as I move the
mouse click on the list bland stay on
the start reading I want to read the
next email I move the mouse a little
click Blanche down and read this is what
the default voice over behavior would
require the user to do control option
luck enabled in control option locked
disabled people in two people on Row one
column status call select selected for
custom keyboard on table out of tivo
splitter screw all area into squirrel
area on to text entry area text entry
area and now i can ask both an interface
to read that email Eric I'm going to
need three months off ok Rick so this is
a good example of where making your
applications accessible is a lot more
than just providing strings for the UI
you're going to need to identify areas
in your application where it's much more
difficult or somebody using the spoken
interface to do something very simple
like check your email and eric is going
to be asking you and telling you
somewhat how to do this when you comes
back on and basically in this case mail
has a situation where they have to UI
elements that are linked together in
some way and by some meaning that your
application defines but it's not you
can't get to it directly through
voiceover so voiceover and accessibility
api's provide you a way to just
stipulate you know link these two
elements together alright and the last
thing that I want to show you is we
provide a list of elements so that you
can easily go to one place or another on
the screen so let's say for instance you
know that you have an item on the screen
in this case yet male and you want to go
directly to it you can bring up a list
with a voiceover command building
harmless item list memnu 36-item so
there are 46 items on this window and
all I need to do is start typing some
portion of that item so I'm just going
to start typing mail and see where that
takes me the middle function that takes
me the mailboxes so I want to go to get
mail go to minimal go to minimal button
and the voice-over cursor moves directly
to it then I can start interacting with
it okay that's pretty much all of the
features that I wanted to show you today
but there are many more so I urge you
please use voiceover to test the level
of accessibility in your applications so
that it's as easy to use for everybody
and not just those who can see and with
that I'd like to ask eric schemer to
come back on thank you very much okay so
of all the things that Ric showed the
most important thing that he showed for
many of you is the screen curtain and
that is turn that screen curtain on and
try to figure out if you can use your
application that's probably the most
effective testing tool you can do
because if you can't use your
application and you knew you know it
your code in it then a user who's not
relying on it on the visual display
won't be able to use it so screen
curtain very important voiceover itself
is a testing tool effectively so let's
keep going so we've given you an
overview of voiceover apple's new spoke
and interface now i'm going to talk
about accessibility to api basics so to
do that I'm going to frame this within
the context voiceover so applications
are out there running on the system some
of those applications are built by Apple
many of them hopefully more of them are
built by you guys and those applications
actually voiceover is this process
that's also sitting out there on the
system and its job is to listen to your
applications and sometimes request
things of your application and produce
feedback for a user so voiceover does
this by sitting on top of a set of
spoken widgets so just like carbon and
Coco have widgets that are very
graphically based and very
mal space perhaps sometimes keyboard
based these widgets foundation are based
on spoken feedback and keyboard input
and these widgets are based on top of
the accessibility API notably attribute
of things in your interface actions
excuse me and notifications now what
this means is it's really important that
your applications give accessibility
clients like voiceover the information
they need to make the end user
successful using your application so
that's what we're going to talk about
here and then there's a whole nother
session tomorrow which goes into much
greater detail session for 24 I'll
reference I'll plug it several times
today don't worry so one of the
questions that comes up immediately as
well we write our application in cocoa
or we write it in carbon and how do you
know the difference and how do you make
heads or tails of our view hierarchy you
know it's there are two completely
different programming models for the
most part and the beauty of this is the
accessibility API is abstract out a way
for us and they provide you a way to
speak to us or in any other
accessibility client in a common
language so everything in your
application is a UI element and
literally when I say everything I mean
everything so windows r UI elements
things inside windows or UI elements
buttons text fields pop-ups
what-have-you things within things in
your in your window our UI elements so
you could have a scroll area which has
children and it's children might have
children so there is ancestry there's a
concept of ancestry to your UI elements
in fact your application is a UI element
and so what does this really mean for us
well let's take a closer look at at the
three main pieces of accessibility
attributes actions and notifications so
attributes this is really the most
important thing and attributes are tell
an accessibility client how to gain how
to figure out the personality of your
application how to know how to represent
it and so the most important attribute
of all is the role attribute every
widget has a role so for example this
button that I have circled here in mail
this is a
button and therefore its role is an ax
button now you don't have to make that
up yourself most of the time most of the
time the stuff that I'm talking about
here if you're using cocoa cocoa or
carbon you're not doing a lot of custom
stuff I'll touch on that later you're
going to get for free because this stuff
is knitted into the framework so you use
all the standard widgets you're going to
get standard behavior so you're going to
the fact that it's a button just happens
to echo itself to us automatically but
we see that it's a button and then we
know which spoken widget to plug into
place to represent that thing okay and
so it gets its personality from its
identification its hierarchy from
attributes we ask your application
questions through an accessibility API
and we say give me the attribute for
your role then we load up some code and
then that code turns around if there's
okay now give me I know this is a button
so give me your title and give me your
description to provide the user with
some more context and give me your
coordinates so that I can draw the the
voice-over cursor in the right location
so this is how we glean information
about about a tree or elements in your
applications and sometimes we ask for
the application application UI element
what's your title right so those are
attributes now actions are how we
request things to occur so occasionally
you might have noticed in the demo that
Rick moved around that color panel and
was pressing buttons in that color panel
and Rick was pressing buttons with the
voice-over cursor not full keyboard
navigation in most cases so the
voice-over cursor has the ability to
accomplish actions in your application
now the key thing is to not think that
actions are so complicated actions are
not like options and actions an
applescript very high level print this
document say that move this to hear
actions in accessibility are very simple
gestures press a button cancel confirm
in fact these are they this is it right
here there are no more actions than this
defined in accessibility so it's a
pretty simple set to work with and again
you're going to get a lot of this for
free if you're using a standard
frameworks and then finally there are
notifications now notifications are
where its
this is really important to an
accessibility client it's also probably
something that you're going to deal with
the least but it's really really
critical so when I say deal with it the
least notifications are again are
knitted into the frameworks and critical
for operation of excessive an
accessibility client but you're going to
get some of this behavior for free a lot
of the notifications that we depend on
our applicant application provided which
means even if you're a fairly custom
application at the application level
we're going to get all the notifications
that we need so this is a more advanced
topic this is one where I really really
want you to go to session 420 for
tomorrow at 1045 I think in the same
room so that's notifications so the
basics of accessibility attributes actor
actions notifications standard behavior
out of the box typically with carbon and
cocoa so now we come to how do you make
your application a really great
application and of course absent flash
to it how do you make the five star
application an application that to a
user who's not relying on the graph of
user interface how do you make that it's
something that that user can appreciate
and really enjoy and make that user want
to use a Macintosh and want to purchase
your application so number one is all
the basics need to work so all the
things that I just talked about and so
if you were to build a basic application
again using some of our stereo tools the
basics are going to work nine times out
of ten there might be a few details that
you might want to do depending on the
way that you've designed your
application but in a bare minimum you
want to be able to get to everything
using voiceover so the voice-over cursor
needs to move to all the things that are
controllable things in your application
or readable things in your application
and it needs to support the basic
accessibility API attributes then this
is where only you can help provide the
user with information about your
application so there are is a concept of
description now the best way to show
this is really to go right to an example
so let me just just the basics of
descriptions are documented ax kax
description attribute is a new attribute
that's defined and the accessibility
frameworks and there are some rules
associated with
is no punctuation lowercase I'll save
that for your future perusal but the
example is really where the rubber meets
the road so if I'm in finder and I've
got a toolbar there might be an item on
that toolbar that has no label no title
so if I have vision I can look at that
and discern that that symbolic left
arrow probably means go back go to the
previous thing common metaphor on a
computer but this is all that can be
gleaned by an accessibility clamp
voiceover button let me do that one more
time okay not very useful close your
eyes and listen to that you're like okay
which one how do I don't know which one
I don't know what do I do next right so
what you really need to do back to
previous container is add a little
context and only you know that context
the accessibility api's can't make that
up on the fly and so we ask that you add
in certain places especially items in
your app in your user interface which
don't have title representation or which
have some sort of symbolic
representation we ask that you provide a
little bit more context so that
voiceover can echo that information
here's another example just okay we know
that this is a list but that doesn't
tell us very much as a user what we
really want to hear is missed okay
sidebar well that's meaningful to me
because I'm a finder user and I know the
finder is a sidebar and that's where I
put my stuff okay that's how I get the
things so it has context now just a note
there is a way to create good and bad
descriptions when you're labeling some
of user interface the way to create a
bad description is to go overboard to
add too much information so it turns out
that the accessibility API is know about
every which is in the interface
generally speaking especially if you're
using standard widgets and those have
attributes that are role descriptions
which can tell spoke and interface the
word button or the word list or the word
menu item or what have you we already
know that information and so don't add
that information to your description it
will be redundant only add the piece
that identifies our differentiates
the actual functionality of that
particular widget so here's an example
of adding too much information back to
previous container you add the
word button to the end we're going to a
co it twice because we don't know we
have to assume that your intention for
that description was clean and contained
only what i needed to here's another bad
ignition I thought I missed it ok so not
too much in the description so that's
description that for labeling an element
that has a symbolic representation and
doesn't have a visual title now there's
another type of element which is source
similar to this and other type of
attribute and that's sometimes in your
user interface there are things that
have labels you label them you drag
amount of interface builder you've set
up your little static text to be a
prompt but the problem is is sometimes
that prompt is above sometimes it's
below sometimes less sometimes just to
the right sometimes it itself is a
symbol ok now as a sighted person I
could look at that and figure out
through the context and layout and all
the all the visual cues what that means
but if I don't have that information I
don't know what I don't know what it's
representing and so there's a way to
associate two elements so that one
element can serve as the title of
another and this is done through the
title UI element attribute and we'll
show you a way to do this later so this
is really really important so if you've
got things that service prompts it's a
nice it's more than nice it's a somewhat
of a required feature from a from a user
of a voiceover a voiceover to want to
know when I land on that text field look
at that prompt and tell me what text
field that texels name is alright and
then finally we get to link UI elements
so in the demo that Rick gave he showed
male and male if your users of mail on
Apple's mail client there's a table and
they're a bunch of messages and lots of
times if you're like me you've got three
or four thousand messages in there and
then you've got your text and what do we
do every day when we read mail we
glanced up and down right we glanced at
this election we select it we glanced
down we read glance up
and so those two things are really
tightly coupled but from a UI element
perspective there's no way for us to
know that they're tightly coupled
there's no way for voiceover to figure
that out on its own and so you've got to
give us that little hint and so there's
this concept of a link UI element
attribute the ability for you to just in
your interface thing I want this thing
to link to this thing and then voiceover
can make that a one keystroke thing for
an end user the user can then move the
voice-over cursor to from their mail
items from subject line down to their
mail message read it linkback select
another and they can just move back and
forth effectively glancing back and
forth using the voice-over cursor this
perhaps is this is one of the most
important things you could do to your
application to make it usable so anytime
you think you notice yourself if you're
cited you notice yourself glancing
between two major pieces of
functionality and it's more than just
going from one button to another think
you might need a link UI element the
fifth thing really has nothing to do
with the accessibility api's but it's
unbelievably important and that's full
keyboard navigation so like Rick did for
his demonstration unplug your mouth and
see if you can drive your application
and if you can then you're successful
but if you can't that makes it that much
harder for a user who has limited you or
no use of a mouse to use your
application and it requires using the
voice-over cursor to get to some of
those elements just the best possible
environment is if every aspect of your
application is it can be accomplished
with full keyboard navigation now one
one question that always comes up is
well I have this drag gesture and that's
how I do things it's a drag gesture how
do i what do I do about that so the best
example that I like to talk about with
that is finder so in finder we typically
copy files by dragging them from one
place to another but in finder you can
also cut and paste files effectively
using the menu commands and that serves
the same purpose it will select a file
copy from the menu move to a new
location paste accomplishes the same
task so that's a perfectly acceptable
alternative to accomplish the same goal
and it's totally
doable by the keyboard so I would
encourage you to do that to parts of
your application that only have keyboard
gestures or excuse me drag gestures so
we get to the end of this list we do the
basics and then we provide a few things
to add context and then we make sure
that we've got full keyboard navigation
and so we have success right so one of
the questions that i get i get
internally and a few times that have had
exposure externally to folks who are
accessorizing their applications is how
hard is it's going to be for us to do it
looks really easy when you present it
like this but how hard it is in reality
and so the best way to answer that is
real simple answer it depends it depends
on what your application is and the real
answer is going to come when you go to
session 420 for tomorrow but my answer
is always if if you have a fairly modern
ly written Coco application or an HIV
you based carbon application you're
going to be in pretty good shape the
frameworks are have had several releases
of iteration and you're going to be in
pretty good shape things are going to
happen automatically for you but if you
have a lot of custom views in cocoa or
you even have your own type of you
you've done some very very custom thing
or you've got some legacy code either
carbon or cocoa and you haven't taken
the opportunity yet to bring it up to
date to current techniques for
accomplishing the same thing now might
be the time to do that because that's
going to be a bigger challenge so
perhaps adding accessibility to your
applications and getting into a new
market of users might be a catalyst for
perhaps bringing some of your older code
into some of the new approaches that
that are used today okay so talk about
smokin interface talked about the basics
talked about some things you can do to
add context now we're going to talk
about some tools this is actually really
short so the first tool is accessibility
verifier so one of the things you can do
is launch your application bring up all
the windows that you want to test or all
the all the interface elements that you
want to
you test and then you can point this
application accessibility verifier right
at your application and have it give you
a report on what might be wrong with it
it'll give you warnings and errors it'll
let you filter them down tell you the
critical ones or even a full
comprehensive report of even even small
nuances that it notice might be wrong so
there's this tool there's also
accessibility inspector now some of you
may notice by looking at the screen that
accessibility inspector looks an awful
lot like UI elements inspector and
that's true so and this is important we
for the first time on Tiger are shipping
accessibility tools as a portion of the
developer tools release so if you look
at your tools seed you're going to
notice that down in developer
applications utilities there's an
accessibility tools folder now and to
takeaway point here for me this is
really important for me and a win for
for the accessibility teams at Apple
accessibility is just as important as
performance tools as graphics tools as
everything else that you do in your in
your world and so these are now shipping
supported products so we've basically
rebranded so to speak you I limped
inspector to accessibility inspector and
we'll improve it over time so that's and
for those of you who have not seen this
tool in the past this basically lets you
look at a particular elements in your
application and get every detail about
it and even do actions and things on it
and you're going to see a demo of that
in just a second we've also added
interface builder support to interface
builder for accessibility so some of the
things that I showed you that you can do
to make your apps even better that you
don't get for free interface builder now
for tiger will provide a way to
accomplish and then finally like I've
already said the most important tool is
voiceover and the screen curtain use
this to test your application this is
where the rubber meets the road if you
don't do it first somebody will a school
teacher will an employer will a
government agency will it's really
really important that this new interface
that's part of aqua if you will is
something
somebody's going to look at your
application with and you want to make
sure that your application behaves and
works well using this interface so with
that I'd like to invite erin Haney on
stage to give you demonstration of some
of these tools thanks Eric so what I'm
going to go over here is just a quick
example what I have is a small hello
world style app and I'm going to take a
look at it with the accessibility tools
just to show you the procedure for
checking out your application and seeing
where it stands in terms of
accessibility so just to start off with
list it's build and run the app and you
actually saw this in the screenshot when
Eric was going to the slides a moment
ago all it is is a little hello world
application with a place for the user
enter their name and a nice ok button to
click so the first thing you want to do
is take a look at this application using
accessibility verifier and as Eric
mentioned there's a new folder inside
developer applications utilities called
accessibility tools and that's where
you'll find accessibility verifier when
you launch it you get a blank window
like this with an application may pop up
and from that application possible you
want to select I apologize for the small
font you want to select your application
as it's running this is runtime checking
and the first thing is does is give you
a tree of all the UI elements you can
see here that are currently instantiated
in your application now if you've got
several dialogues in your application
that are not currently open they're not
going to show up here this is just
what's currently open and there are
several tests you can run so you click
the cheek you choose test button up here
and each one of them has a little
explanation you can turn them on and off
they're all on by default and we
recommend that you run them all and then
when you click verify it actually
performs the test and now that it's done
you can see you get a list of warning
it's very comprehensive so you may get a
lot of morning so what we have here is a
filter to look at just a critical one
and you'll notice that some of these are
highlighted like links so when you click
on it actually jumps to the point in
your hierarchy where the error is it I'm
going to focus on this one where it says
title and we have no x description
attribute and what that refers to is
when I click on it a button inside the
window accessibility demo it says
there's no description and no title well
now that I know where it is i'd like to
go take a look at it in more detail so
i'm going to launch accessibility
inspector and let's bump up the font
just a little bit so that people can see
it now this is a lot like pixie it just
follows wherever you got the mouse so
let's see there's only one button in my
window so I know which one it is but you
can use this quickly to look at it and
you can see in the list of attributes
down there that there's no description
and no title and this means that an
accessibility application is going to
not know what to say or how to describe
this UI element when it comes to it now
just to quickly demo a few other
features of accessible in the inspector
there is a hot key to lock the view just
like in 6c when it turns red like that
now I can move the mouse around and it's
not following it unfortunately there's a
hotkey conflict but if you just click
somewhere it goes away and it also adds
this extra palette when you've got an in
lockview you can take a look in more
detail in any of the elements there's
also a small menu that lets you go to
the window container and let me turn on
the highlight now you can see what's
currently focused in accessibility
inspectors it's highlighted in red and I
can navigate down to one of the buttons
let me just turn off the lock real quick
and go back to that button now you can
see it highlighted and if there are any
actions or any settable attributes you
can actually control them here inside
july element inspector or as it's now
called accessibility inspector and this
gives you a lot of power when it comes
to debugging so now I want to fix some
of these errors that I found so let's go
back to Xcode and open the need of an
interface builder and now I'll show you
the accessibility features that have
been added to interface builder so if
you just go to the get info panel you'll
see that there's a new item here in the
pop-up accessibility
and now as Eric mentioned you can link
two elements together so that lets say
the the first name field obviously it's
going to have a title first name now you
don't want to enter that same text in
two different places what you want to do
is link them together so that the edit
field gets its name from this static
text field so you control click and drag
then select tiled UI element and click
connect and now from then on
accessibility will know that this edit
field is getting its name from the
static text right next to it that I've
linked up lets link the other one up and
do the same thing let's get together as
a title element if you also wanted to
have a link UI elements such as the
example in mail where you have items and
a listview linking two items in the
window below you can also hook that up
here and lastly for this button which is
an you know a fairly common occurrence
where you have an image button it's got
no description and no title let's type
in a description for it and as Eric
mentioned we don't want to include the
word button in the description it's just
okay we don't want to say ok button
because then we'll get ok button button
now I have to mention that this support
in interface builder unfortunately we
found some last-minute problems with it
so the version that's on the DVD we do
not recommend that you use it it's just
to show you the direction that we're
moving in we're hoping to have those
problems fixed as soon as possible so we
apologize for that so if the test that
i'm just going to use run interface to
the test interface feature in interface
builder so for the last part of this i'm
going to turn on spoken user interface
or voiceover as well now the face is an
active risk interface builder
application window accessibility tunnel
onto first name and it takes a few and
now you can see it's picking up the name
to the text edit field let me just go
down to the next one so you can hear it
nice me it takes a few and from now on
if i go into interface builder and
change the string and the static text
field next to it will automatically get
picked up okay
and now the description that I've added
is also ventolin hook it up and that's
it it's that easy i accessorize my app
and so now I'm going to turn it back
over to Eric thank you okay so we've
covered all the things I wanted to cover
hopefully you have a good grasp of what
voiceover is all about and some basics
of accessibility and how you can provide
context in your application and we've
shown you some tools now there's a place
you can get more information there's
documentation online also on our website
if you if you're curious a good place to
go is actually dive down into where the
header files exist for accessibility
because if you're going to accessorize
your applications these are things that
you know this is the real deal that's
where the information is a little bit
more information human interface
guidelines software design guidelines
and then I can't stress enough down here
at the bottom tomorrow 1045 in this room
developing accessible applications it's
going to go in depth into how to develop
successful applications so a few people
to contact I'm going to invite travis
brown on stage tech travis is a
technology evangelist for Apple has a
lot to do with accessibility some of you
may already know as well Mary Beth
Jane's assistive technology partnership
manager and Mike shamanic who is product
marketing manager and for among other
things voiceover so with that I'd like
to ask Travis to come up on stage I'm
going to have Travis moderate some
questions