<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Visual Studio Accessibility</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/vsaccessibility/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/vsaccessibility/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:26:05 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Help Us Make Visual Studio More Accessible!</title>
      <link>https://docs.microsoft.com/archive/blogs/vsaccessibility/help-us-make-visual-studio-more-accessible</link>
      <pubDate>Wed, 09 Feb 2005 17:28:00 GMT</pubDate>
      <dc:creator><![CDATA[vsaccessibility]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vsaccessibility/2005/02/09/help-us-make-visual-studio-more-accessible/</guid>
      <description><![CDATA[I'm Aaron Brethorst, the Program Manager responsible for Accessibility and User Interface...]]></description>
      <content:encoded><![CDATA[<p><font face="Tahoma" size="2">I'm Aaron Brethorst, the Program Manager responsible for Accessibility and User Interface Consistency throughout Visual Studio. The team I work with is very interested in building up a contact list of our users who use Visual Studio with any and all accessibility settings enabled:</font></p> <ul> <li><font face="Tahoma" size="2">Screen readers and other assistive technologies.</font></li> <li><font face="Tahoma" size="2">High contrast mode.</font></li> <li><font face="Tahoma" size="2">Large fonts.</font></li> <li><font face="Tahoma" size="2">and anything else I may have missed.</font></li></ul> <p><font face="Tahoma" size="2">We'd love the opportunity to discuss how we can improve your experience with Visual Studio on an ongoing basis.</font></p> <p><font face="Tahoma" size="2">Please leave a comment on this weblog, or email me directly at </font><a href="mailto:abreth@microsoft.com"><font face="Tahoma" size="2">abreth@microsoft.com</font></a><font face="Tahoma" size="2">.</font></p> <p><font face="Tahoma" size="2">Thanks!<br />Aaron</font></p>]]></content:encoded>
    </item>
    <item>
      <title>The Fundamentals of Accessibility</title>
      <link>https://docs.microsoft.com/archive/blogs/vsaccessibility/the-fundamentals-of-accessibility</link>
      <pubDate>Mon, 20 Sep 2004 21:10:00 GMT</pubDate>
      <dc:creator><![CDATA[vsaccessibility]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vsaccessibility/2004/09/20/the-fundamentals-of-accessibility/</guid>
      <description><![CDATA[Consider this article your one-stop shop for all things IAccessible.&nbsp; Below is a summary of the...]]></description>
      <content:encoded><![CDATA[<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2">Consider this article your one-stop shop for all things IAccessible.<span style="mso-spacerun: yes">&nbsp; </span>Below is a summary of the most important topics under my accessibility category.<span style="mso-spacerun: yes">&nbsp; </span></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana"><font size="2">Getting Started<o:p></o:p></font></font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">New to Accessibility? <span style="mso-spacerun: yes">&nbsp;</span>So was I three years ago.<span style="mso-spacerun: yes">&nbsp; </span>Get caught-up by reading my MSDN whitepaper on </font><a href="http://msdn.microsoft.com/library/en-us/dnacc/html/accessibility_testing.asp"><font face="Verdana" size="2">Testing for Accessibility</font></a><font face="Verdana" size="2">.<span style="mso-spacerun: yes">&nbsp; </span>Also, remember that </font><A href="http://blogs.msdn.com/saraford/archive/2004/04/27/121826.aspx"><font face="Verdana" size="2">Accessibility isn’t a feature</font></a><font face="Verdana" size="2">.<span style="mso-spacerun: yes">&nbsp; </span>Just like localization, globalization, security, performance, and so forth, it is a standard that must be addressed.</font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana"><font size="2">MSAA / IAccessible<o:p></o:p></font></font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">If you want your feature to be accessible, you’ll need to implement IAccessible. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana"><font size="2"><span style="COLOR: red">Must Read:</span><span style="mso-spacerun: yes">&nbsp; </span>Explanation of each of the IAccessible Properties</font></font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><A href="http://blogs.msdn.com/saraford/archive/2004/08/25/220499.aspx"><font face="Verdana" size="2">http://blogs.msdn.com/saraford/archive/2004/08/25/220499.aspx</font></a></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana"><font size="2"><span style="COLOR: red">Must Read:</span><span style="mso-spacerun: yes">&nbsp; </span>Which Control-Types Support Which Properties</font></font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><A href="http://blogs.msdn.com/saraford/archive/2004/08/20/217941.aspx"><font face="Verdana" size="2">http://blogs.msdn.com/saraford/archive/2004/08/20/217941.aspx</font></a></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana"><font size="2"><span style="COLOR: red">Must Read:</span><span style="mso-spacerun: yes">&nbsp; </span>How To Really Support MSAA Names </font></font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><A href="http://blogs.msdn.com/saraford/archive/2004/01/25/62669.aspx"><font face="Verdana" size="2">http://blogs.msdn.com/saraford/archive/2004/01/25/62669.aspx</font></a></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2">Commonly Asked Questions regarding Invisible, Offscreen and <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:place w:st="on"><st1:PlaceName w:st="on">Unavailable</st1:PlaceName> <st1:PlaceType w:st="on">States</st1:PlaceType></st1:place></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><A href="http://blogs.msdn.com/saraford/archive/2004/01/06/48091.aspx"><font face="Verdana" size="2">http://blogs.msdn.com/saraford/archive/2004/01/06/48091.aspx</font></a></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Which Properties Must Be Localized</font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><A href="http://blogs.msdn.com/saraford/archive/2004/04/16/114809.aspx"><font face="Verdana" size="2">http://blogs.msdn.com/saraford/archive/2004/04/16/114809.aspx</font></a></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2"><strong><span style="COLOR: red">Must Read:</span> <span style="mso-spacerun: yes">&nbsp;</span>MSAA / IAccessible Samples</strong><o:p>&nbsp;</o:p></font></font></p> <p><font face="Verdana" size="2">Fiona, one of the devs on my team VSCore, has put together a really nice sample on </font><a href="http://www.gotdotnet.com/Community/Workspaces/Workspace.aspx?id=4b5530a0-c900-421b-8ed6-7407997fa979"><span style="COLOR: windowtext; TEXT-DECORATION: none; text-underline: none"><font face="Verdana" size="2">how to implement IAccessible for a Custom Push Button</font></span></a><font face="Verdana"><font size="2"> <span lang="NO" style="mso-ansi-language: NO-BOK"><A href="http://blogs.msdn.com/saraford/archive/2004/06/18/159730.aspx"><span lang="EN" style="mso-ansi-language: EN-US">http://blogs.msdn.com/saraford/archive/2004/06/18/159730.aspx</span></a></span></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana"><font size="2"><span style="COLOR: red">Must Read: <span style="mso-spacerun: yes">&nbsp;</span></span>MSAA Testing Tools<o:p></o:p></font></font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Have you ever used </font><a href="http://msdn.microsoft.com/library/en-us/msaa/msaaccgd_6alu.asp"><span style="COLOR: windowtext; TEXT-DECORATION: none; text-underline: none"><font face="Verdana" size="2">AccExplorer </font></span></a><font face="Verdana" size="2">or </font><a href="http://msdn.microsoft.com/library/en-us/msaa/msaaccgd_62yb.asp"><span style="COLOR: windowtext; TEXT-DECORATION: none; text-underline: none"><font face="Verdana" size="2">Inspect </font></span></a><font face="Verdana" size="2">and wondered whether the information presented was correct? Have you ever wanted to know which controls really need </font><a href="http://msdn.microsoft.com/library/en-us/msaa/msaaccgd_95kk.asp"><span style="COLOR: windowtext; TEXT-DECORATION: none; text-underline: none"><font face="Verdana" size="2">Names, Keyboard Shortcuts, Descriptions, and so forth</font></span></a><font face="Verdana" size="2">? It's time to MsaaVerify! MsaaVerify will verify 9 </font><a href="http://msdn.microsoft.com/library/en-us/msaa/msaastart_9w2t.asp"><span style="COLOR: windowtext; TEXT-DECORATION: none; text-underline: none"><font face="Verdana" size="2">Microsoft Active Accessibility </font></span></a><font face="Verdana" size="2">properties for 10 Microsoft Active Accessibility </font><a href="http://msdn.microsoft.com/library/en-us/msaa/msaaccgd_1xfd.asp"><span style="COLOR: windowtext; TEXT-DECORATION: none; text-underline: none"><font face="Verdana" size="2">Role </font></span></a><font face="Verdana" size="2">types.</font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><A href="http://blogs.msdn.com/saraford/archive/2004/05/11/130002.aspx"><font face="Verdana" size="2">http://blogs.msdn.com/saraford/archive/2004/05/11/130002.aspx</font></a></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana"><font size="2"><span style="COLOR: red">Updated!</span><span style="mso-spacerun: yes">&nbsp; </span>How To Really Do Screen Reader Testing.<o:p></o:p></font></font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">In the past, I’ve focused on testing MSAA Properties.<span style="mso-spacerun: yes">&nbsp; </span>Now we’re ready to take screen reading testing to the next level by adding Events into the algorithm.<span style="mso-spacerun: yes">&nbsp; </span>It is not only essential that a control support the correct MSAA properties, but it is also essential that the control fire the right event for these properties.</font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><A href="http://blogs.msdn.com/saraford/archive/2004/08/20/218078.aspx"><font face="Verdana" size="2">http://blogs.msdn.com/saraford/archive/2004/08/20/218078.aspx</font></a></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana"><font size="2">Accessibility Macros<o:p></o:p></font></font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">As demo’ed at CSUN, these macros allow users to tweak the Visual Studio <st1:mswterms w:st="on">.NET</st1:mswterms> 2003 IDE by easily increasing and decreasing font size, toggling colors in the editor to pure black on white (or vice versa), and maximizing tool windows.</font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><A href="http://blogs.msdn.com/saraford/archive/2004/05/14/132296.aspx"><font face="Verdana" size="2">http://blogs.msdn.com/saraford/archive/2004/05/14/132296.aspx</font></a></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana"><font size="2">Bugs to look out for<o:p></o:p></font></font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">A listing of unpopular bugs given to me by an Assistive Technology Vendor</font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><A href="http://blogs.msdn.com/saraford/archive/2004/01/06/48090.aspx"><font face="Verdana" size="2">http://blogs.msdn.com/saraford/archive/2004/01/06/48090.aspx</font></a></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">What the High Underline Letters Checkbox Actually Does</font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><A href="http://blogs.msdn.com/saraford/archive/2004/04/16/114935.aspx"><font face="Verdana" size="2">http://blogs.msdn.com/saraford/archive/2004/04/16/114935.aspx</font></a></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><A href="http://blogs.msdn.com/saraford/archive/2004/04/27/121810.aspx"><font face="Verdana" size="2">http://blogs.msdn.com/saraford/archive/2004/04/27/121810.aspx</font></a></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Why Radio Buttons don’t resize</font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><A href="http://blogs.msdn.com/saraford/archive/2004/05/25/141462.aspx"><font face="Verdana" size="2">http://blogs.msdn.com/saraford/archive/2004/05/25/141462.aspx</font></a></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana"><font size="2">Channel 9 Video<o:p></o:p></font></font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">My Channel 9 Interview on Accessibility and Visual Studio</font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><a href="https://channel9.msdn.com/ShowPost.aspx?PostID=5382"><font face="Verdana" size="2">https://channel9.msdn.com/ShowPost.aspx?PostID=5382</font></a></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">more at </font><A href="http://blogs.msdn.com/saraford/archive/2004/04/30/123993.aspx"><font face="Verdana" size="2">http://blogs.msdn.com/saraford/archive/2004/04/30/123993.aspx</font></a></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana"><font size="2">CSUN<o:p></o:p></font></font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Presenting at CSUN </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><A href="http://blogs.msdn.com/saraford/archive/2004/02/17/75295.aspx"><font face="Verdana" size="2">http://blogs.msdn.com/saraford/archive/2004/02/17/75295.aspx</font></a></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Getting Ready </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><A href="http://blogs.msdn.com/saraford/archive/2004/03/14/89611.aspx"><font face="Verdana" size="2">http://blogs.msdn.com/saraford/archive/2004/03/14/89611.aspx</font></a></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">References </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><A href="http://blogs.msdn.com/saraford/archive/2004/03/17/91255.aspx"><font face="Verdana" size="2">http://blogs.msdn.com/saraford/archive/2004/03/17/91255.aspx</font></a></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Blogging and Accessibility Presentation </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><A href="http://blogs.msdn.com/saraford/archive/2004/06/14/155479.aspx"><font face="Verdana" size="2">http://blogs.msdn.com/saraford/archive/2004/06/14/155479.aspx</font></a></p>]]></content:encoded>
    </item>
    <item>
      <title>Accessibility in Visual Studio</title>
      <link>https://docs.microsoft.com/archive/blogs/vsaccessibility/accessibility-in-visual-studio</link>
      <pubDate>Mon, 20 Sep 2004 19:10:00 GMT</pubDate>
      <dc:creator><![CDATA[vsaccessibility]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vsaccessibility/2004/09/20/accessibility-in-visual-studio/</guid>
      <description><![CDATA[Sara Ford, an incredibly talented tester on VS Platform, my team, recently moved over to work on...]]></description>
      <content:encoded><![CDATA[<div class="entrylistitem"><font face="Verdana" size="2"><A href="http://blogs.msdn.com/saraford/archive/2004/09/15/230034.aspx">Sara Ford</a>, an incredibly talented tester on VS Platform, my team, recently moved over to work on testing the <A href="http://blogs.msdn.com/vseditor">Visual Studio Editor</a>. As part of this transition, she has left her role in the Visual Studio Accessibility team. As part of this transition, we decided that it made the most sense to create a shared weblog for our "virtual team." Sara had a ton of great accessibility-related content on her weblog that we didn't want to lose, so I have moved all of it over here. You can count on the VSAccessibility blog being a great source for more information in the future.</font></div> <div class="entrylistitem"><font face="Verdana" size="2"></font>&nbsp;</div> <div class="entrylistitem"><font face="Verdana" size="2">Thanks,</font></div> <div class="entrylistitem"><font face="Verdana" size="2">Aaron Brethorst</font></div> <div class="entrylistitem"><font face="Verdana" size="2">User Experience Program Manager - VS Platform</font></div> <div class="entrylistitem"><strong><font face="Verdana" size="2"></font></strong>&nbsp;</div> <div class="entrylistitem"><font face="Verdana" size="2"><strong>General Accessibility and MSAA:</strong></font></div> <ul> <li> <div class="entrylistitem"><a class="entrylisttitle" id="CategoryEntryList" href="/vsaccessibility/articles/232090.aspx"><font face="Verdana" color="#0000ff" size="2">The Fundamentals of Accessibility</font></a><font face="Verdana" color="#0000ff" size="2"> </font></div></li> <li> <div class="entrylistitem"><a class="entrylisttitle" id="CategoryEntryList" href="/vsaccessibility/articles/232161.aspx"><font face="Verdana" color="#0000ff" size="2">Testing for Accessibility: Keyboard, High Contrast, and Assistive Technology Compatibility&nbsp;</font></a><font face="Verdana" color="#0000ff" size="2">&nbsp;</font></div></li> <li> <div class="entrylistitem"><a class="entrylisttitle" id="CategoryEntryList" href="/vsaccessibility/articles/232158.aspx"><font face="Verdana" color="#0000ff" size="2">Watch Out for these Unpopular Accessibility Bugs</font></a><font face="Verdana" color="#0000ff" size="2"> </font></div></li> <li> <div class="entrylistitem"><a class="entrylisttitle" id="CategoryEntryList" href="/vsaccessibility/articles/232157.aspx"><font face="Verdana" color="#0000ff" size="2">Normal, Unavailable, Offscreen, and Invisible AA States Explained</font></a><font face="Verdana" color="#0000ff" size="2"> </font></div></li> <li> <div class="entrylistitem"><a class="entrylisttitle" id="CategoryEntryList" href="/vsaccessibility/articles/232156.aspx"><font face="Verdana" color="#0000ff" size="2">Questions and answers about AA-Naming your control</font></a><font face="Verdana" color="#0000ff" size="2">&nbsp;&nbsp;</font></div></li> <li> <div class="entrylistitem"><a class="entrylisttitle" id="CategoryEntryList" href="/vsaccessibility/articles/232155.aspx"><font face="Verdana" color="#0000ff" size="2">Usability and Accessibility - are they the same thing? </font></a></div></li> <li> <div class="entrylistitem"><a class="entrylisttitle" id="CategoryEntryList" href="/vsaccessibility/articles/232153.aspx"><font face="Verdana" color="#0000ff" size="2">Book Report on "Accessibility for Everybody: Understanding the Section 508 Accessibility Requirements"</font></a><font face="Verdana" color="#0000ff" size="2"> </font></div></li> <li> <div class="entrylistitem"><a class="entrylisttitle" id="CategoryEntryList" href="/vsaccessibility/articles/232151.aspx"><font face="Verdana" color="#0000ff" size="2">"Testing for Accessibility" article moved to new location</font></a><font face="Verdana" color="#0000ff" size="2"> </font></div></li> <li> <div class="entrylistitem"><a class="entrylisttitle" id="CategoryEntryList" href="/vsaccessibility/articles/232150.aspx"><font face="Verdana" color="#0000ff" size="2">What do you think about desktop customization?</font></a><font face="Verdana" color="#0000ff" size="2"> </font></div></li> <li> <div class="entrylistitem"><a class="entrylisttitle" id="CategoryEntryList" href="/vsaccessibility/articles/232148.aspx"><font face="Verdana" color="#0000ff" size="2">What does IAccessible::get_accKeyboardShortcut() return?</font></a><font face="Verdana" color="#0000ff" size="2"> </font></div></li></ul> <div class="entrylistitem"><font face="Verdana" size="2"><strong>Visual Studio Accessibility:</strong></font></div> <div class="entrylistitem"> <ul> <li> <div class="entrylistitem"><a class="entrylisttitle" id="CategoryEntryList" href="/vsaccessibility/articles/232159.aspx"><font face="Verdana" color="#0000ff" size="2">Visual Studio Core Team's Accessibility Lab Tour Activity</font></a></div></li> <li> <div class="entrylistitem"><a class="entrylisttitle" id="CategoryEntryList" href="/vsaccessibility/articles/232154.aspx"><font face="Verdana" color="#0000ff" size="2">Results from an informal usability study with an ASP.Net developer who has low vision</font></a></div></li> <li> <div class="entrylistitem"><a class="entrylisttitle" id="CategoryEntryList" href="/vsaccessibility/articles/232152.aspx"><font face="Verdana" color="#0000ff" size="2">References from CSUN Presentation "Accessibility in Visual Studio ("Whidbey") and ASP.NET"</font></a><font face="Verdana" color="#0000ff" size="2"> </font></div></li> <li> <div class="entrylistitem"><a class="entrylisttitle" id="CategoryEntryList" href="/vsaccessibility/articles/232140.aspx"><font face="Verdana" color="#0000ff" size="2">Accessibility Macros for Visual Studio 2003</font></a><font face="Verdana" color="#0000ff" size="2">&nbsp;</font></div></li> <li> <div class="entrylistitem"><a class="entrylisttitle" id="CategoryEntryList" href="/vsaccessibility/articles/232134.aspx"><font face="Verdana" color="#0000ff" size="2">"Hidden" Keyboard Shortcuts in Visual Studio 2005</font></a></div></li></ul></div>]]></content:encoded>
    </item>
    <item>
      <title>Disclaimer</title>
      <link>https://docs.microsoft.com/archive/blogs/vsaccessibility/disclaimer</link>
      <pubDate>Mon, 20 Sep 2004 18:48:00 GMT</pubDate>
      <dc:creator><![CDATA[vsaccessibility]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vsaccessibility/2004/09/20/disclaimer/</guid>
      <description><![CDATA[These postings&nbsp;are provided "AS IS" with no warranties, and confers no rights. The content of...]]></description>
      <content:encoded><![CDATA[These postings&nbsp;are provided "AS IS" with no warranties, and confers no rights. The content of this site are our own personal opinions and do not represent&nbsp;our employer's view in any way. In addition, our thoughts and opinions often change, and as a weblog is intended to provide a semi-permanent point in time snapshot you should not consider out-of-date posts to reflect our current thoughts and opinions.]]></content:encoded>
    </item>
    <item>
      <title>Testing for Accessibility: Keyboard, High Contrast, and Assistive Technology Compatibility</title>
      <link>https://docs.microsoft.com/archive/blogs/vsaccessibility/testing-for-accessibility-keyboard-high-contrast-and-assistive-technology-compatibility</link>
      <pubDate>Mon, 20 Sep 2004 18:42:00 GMT</pubDate>
      <dc:creator><![CDATA[vsaccessibility]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vsaccessibility/2004/09/20/testing-for-accessibility-keyboard-high-contrast-and-assistive-technology-compatibility/</guid>
      <description><![CDATA[Consider this my testament as an Accessibility Tester.&nbsp; I am a Software Designer Engineer in...]]></description>
      <content:encoded><![CDATA[<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Consider this my testament as an Accessibility Tester.<span style="mso-spacerun: yes">&nbsp; </span>I am a Software Designer Engineer in Test on the <?XML:NAMESPACE PREFIX = ST1 /><ST1:MSWTERMS w:st="on">Visual Studio</ST1:MSWTERMS> Core Team.<span style="mso-spacerun: yes">&nbsp; </span>My team owns the critical aspects of the integrated shell, and I am responsible for the quality of the shell's Accessibility. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><?XML:NAMESPACE PREFIX = O /><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">When I first started Accessibility testing two years ago, I had never heard of Accessibility in terms of software.<span style="mso-spacerun: yes">&nbsp; </span>Sure, I had seen the Accessibility Options icon in my Control Panel, but that was really the extent of my knowledge at that time.<span style="mso-spacerun: yes">&nbsp; </span>When I was asked to do ad-hoc directed Accessibility testing against <ST1:MSWTERMS w:st="on">Visual Studio</ST1:MSWTERMS> , my first question to the Program Manager was,&nbsp;"How do I test for this?<span style="mso-spacerun: yes">&nbsp; </span>How do I test using a screen reader?"<span style="mso-spacerun: yes">&nbsp; </span>He replied, "Turn off your monitor, I guess."&nbsp;<span style="mso-spacerun: yes">&nbsp; </span>And so I did... </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">There is a lot of information out there about what it means to be Accessible.<span style="mso-spacerun: yes">&nbsp; </span>A couple of examples: </font></p> <ol> <li> <div class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2">Does your application work with a Screen Reader?<span style="mso-spacerun: yes">&nbsp; </span></font></font></div> <li> <div class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2">Does your application respond to High Contrast?<span style="mso-spacerun: yes">&nbsp; </span></font></font></div></li></ol> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">From a tester' s perspective, we need specific details in order to test.<span style="mso-spacerun: yes">&nbsp; </span>Just saying&nbsp;"Does the feature work" isn't deterministic.<span style="mso-spacerun: yes">&nbsp; </span>What are these details?<span style="mso-spacerun: yes">&nbsp; </span>What does a tester need to know in order to verify something works with either an Assistive Technology device (aka screen reader) or an Accessibility Feature (aka High Contrast)? </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2">It is critical to know not only the&nbsp;"what" to test in terms of Accessibility, but also the&nbsp;"how" to test, which is the more important.<span style="mso-spacerun: yes">&nbsp; </span>For now, I'll only discuss three categories of Accessibility:<span style="mso-spacerun: yes">&nbsp; </span></font></font></p> <ol> <li> <div class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Keyboard Access </font></div> <li> <div class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">High Contrast </font></div> <li> <div class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2">Assistive Technology Compatibility&nbsp;- specifically screen readers.<span style="mso-spacerun: yes">&nbsp; </span></font></font></div></li></ol> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">For each category, I will go into detail regarding what a tester is looking for and also how to find it. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana" size="2">What is Keyboard Accessibility<O:P></O:P> </font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana" size="2"></font></strong>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana" size="2"></font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana" size="2"></font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">This is the easiest of the three to test.<span style="mso-spacerun: yes">&nbsp; </span>Most people have used this category without even realizing it was related to Accessibility.<span style="mso-spacerun: yes">&nbsp; </span>Anytime someone uses Ctrl-X and Ctrl-C to cut and copy text without the mouse, he/she is using Accessibility.<span style="mso-spacerun: yes">&nbsp; </span>Not convinced?<span style="mso-spacerun: yes">&nbsp; </span>Let us compare the keyboard versus the mouse in this cut/paste scenario: </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Constants in both scenarios: </font></p> <ul> <li> <div class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l2 level1 lfo3; tab-stops: list .5in"><font face="Verdana" size="2">Outlook 2003 Mail Message using Word as Editor </font></div> <li> <div class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l2 level1 lfo3; tab-stops: list .5in"><font face="Verdana" size="2">Cursor is at the end of the sentence to move </font></div> <li> <div class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l2 level1 lfo3; tab-stops: list .5in"><font face="Verdana" size="2">Move the first sentence after the second sentence. </font></div></li></ul> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Keyboard Steps: </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <ol style="MARGIN-TOP: 0in" type="1"> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"><font face="Verdana" size="2">Press Ctrl + Shift + Home </font> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"><font face="Verdana" size="2">Press Ctrl-X </font> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"><font face="Verdana" size="2">Press Ctrl-End </font> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"><font face="Verdana" size="2">Press Ctrl-V </font></li></ol> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Mouse Steps: </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <ol style="MARGIN-TOP: 0in" type="1"> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l4 level1 lfo2; tab-stops: list .5in"><font face="Verdana" size="2">Move mouse to beginning of document </font> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l4 level1 lfo2; tab-stops: list .5in"><font face="Verdana" size="2">Highlight the text to copy </font> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l4 level1 lfo2; tab-stops: list .5in"><font face="Verdana" size="2">Right click (bring up context menu) </font> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l4 level1 lfo2; tab-stops: list .5in"><font face="Verdana" size="2">Select&nbsp; "cut" </font> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l4 level1 lfo2; tab-stops: list .5in"><font face="Verdana" size="2">Move mouse to end of document </font> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l4 level1 lfo2; tab-stops: list .5in"><font face="Verdana" size="2">Left-click </font> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l4 level1 lfo2; tab-stops: list .5in"><font face="Verdana" size="2">Right-click </font> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l4 level1 lfo2; tab-stops: list .5in"><font face="Verdana" size="2">Select paste. </font></li></ol> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Although both scenarios took approximately the same amount of time (5 seconds), the Mouse Steps are obviously much longer than the Keyboard Steps.<span style="mso-spacerun: yes">&nbsp; </span>Another thing I noticed while timing myself was how error prone the Mouse Steps were.<span style="mso-spacerun: yes">&nbsp; </span>Sometimes I didn't get the mouse pointer exactly at the same point as system cursor, so I had to redo the highlight.<span style="mso-spacerun: yes">&nbsp; </span>This error took an extra few seconds to correct, even more if I didn't notice it until after I did the paste. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">When testing for keyboard accessibility, keep in mind the the miniminum number of keystroks must always be used.&nbsp; It's either a design issue or a coding defect.&nbsp; A design issue is using the keyboard shortcut "Ctrl + Alt + Shift + T" to perform a function, whereas "Enter" works just as well.&nbsp; I'll explore this example in more detail in the next section.&nbsp; A coding defect is when a control with a tab stop is missing its Accelerator or Mnemonic.&nbsp; This is the underlined letter that appears when you have&nbsp;Control Panel - Accessibility Options - Keyboard Tab's "Show extra keyboard&nbsp;help in&nbsp;programs" checked.&nbsp; Yeah, not the best name for the feature, but now you know what it does!&nbsp;&nbsp;Consider a dialog that&nbsp;has about twenty controls&nbsp;with Tab stops.&nbsp;&nbsp;Suppose focus is on the 10th control, but the user needs to reach the&nbsp;20th control.&nbsp; Of course, the 20th control&nbsp;doesn't have a keyboard shortcut, so the user is forced to hit tab&nbsp;10 times.&nbsp; A keyboard shortcut requires just the Alt +&nbsp;Underlined letter - 2 keystrokes.&nbsp;&nbsp;This is especially&nbsp;important for someone with a <ST1:MSWTERMS w:st="on">mobility</ST1:MSWTERMS> disability or has pain in their wrists when typing. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">The What of keyboard accessibility is doing everything that a mouse can do using the keyboard.<span style="mso-spacerun: yes">&nbsp; </span>That's all it is.<span style="mso-spacerun: yes">&nbsp; </span>QED. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana" size="2"></font></u></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana" size="2">How to Test Keyboard Accessibility<O:P></O:P> </font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana" size="2"></font></strong>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana" size="2"></font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana" size="2"></font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Unplug your mouse.<span style="mso-spacerun: yes">&nbsp; </span>You cannot test a feature for keyboard accessibility if your mouse is just inches away from you for the following reasons: </font></p> <ul> <li> <div class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l3 level1 lfo4; tab-stops: list .5in"><font face="Verdana" size="2">We are creatures of habit </font></div> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l3 level1 lfo4; tab-stops: list .5in"><font face="Verdana" size="2">We can be bias without knowing it </font> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l3 level1 lfo4; tab-stops: list .5in"><font face="Verdana" size="2">We might accidentally cheat </font></li></ul> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Consider reading new mail in your Outlook inbox.<span style="mso-spacerun: yes">&nbsp; </span>I always use the mouse to select a new piece of mail.<span style="mso-spacerun: yes">&nbsp; </span>Suppose the focus wasn't on the inbox list and was on the folder view instead.<span style="mso-spacerun: yes">&nbsp; </span>I would have to actually look up the keyboard shortcut in the docs to get to the list view.<span style="mso-spacerun: yes">&nbsp; </span>However, I've trained myself to use the mouse to read mail.<span style="mso-spacerun: yes">&nbsp; </span>If I knew the mouse was still there, I could subconsciously use it instead of the keyboard.<span style="mso-spacerun: yes">&nbsp; </span>Trust me on this one as I've done it before.<span style="mso-spacerun: yes">&nbsp; </span>It's better just to remove the mouse&nbsp;and avoid the temptation. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Another critical point is knowing which features map 1-1 with the keyboard and which don't.<span style="mso-spacerun: yes">&nbsp; </span>For example, the keyboard shortcut to drop down a combo box's list is Alt-DownArrow.<span style="mso-spacerun: yes">&nbsp; </span>This is virtually the same thing as using the mouse to press the combo box's button.<span style="mso-spacerun: yes">&nbsp; </span>However, what's interesting is how to test drag-and-drop.<span style="mso-spacerun: yes">&nbsp; </span>In some situations, you don't want the user to literally capture an object via the keyboard and drag it to a new location.<span style="mso-spacerun: yes">&nbsp; </span>An example is dragging a toolbox icon, like a button, onto a winform designer.<span style="mso-spacerun: yes">&nbsp; </span>The user simply has to press Enter for the button to appear on the designer.<span style="mso-spacerun: yes">&nbsp; </span>By the way, the keyboard shortcut to force the toolbox to appear in <ST1:MSWTERMS w:st="on">Visual Studio</ST1:MSWTERMS> <ST1:MSWTERMS w:st="on">.NET</ST1:MSWTERMS> is Ctrl + Alt + x. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">In the previous example, I mentioned the shortcut "Enter."&nbsp;<span style="mso-spacerun: yes">&nbsp; </span>In the letter of the law, I could substitute "Ctrl + Alt + Shift + T" and still achieve the desired effect.<span style="mso-spacerun: yes">&nbsp; </span>Considering the spirit of the law, how intuitive is "Ctrl + Alt + Shift + T" compared to "Enter"?<span style="mso-spacerun: yes">&nbsp; </span>How will the user know to use this command, besides reading through lots of documentation?<span style="mso-spacerun: yes">&nbsp; </span>In other words, keep it simple, direct, and intuitive as possible.<span style="mso-spacerun: yes">&nbsp; </span>If the keyboard shortcut doesn't fall into one of these categories, there's a potential keyboard accessibility bug lurking around. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">A keyboard shortcut must never be used to replace broken keyboard functionality.<span style="mso-spacerun: yes">&nbsp; </span>For example, to check a checkbox, the user presses spacebar.<span style="mso-spacerun: yes">&nbsp; </span>If there's ever a keyboard shortcut to replace spacebar to check a checkbox, it is an accessibility bug.<span style="mso-spacerun: yes">&nbsp; </span>Check out the standard <ST1:MSWTERMS w:st="on"><a href="http://www.microsoft.com/enable/products/keyboard/keyboardresults.asp?Product=27"><font color="#223355">Windows XP </font></a></ST1:MSWTERMS>shortcuts.<span style="mso-spacerun: yes">&nbsp; </span>If there's a keyboard shortcut that is replacing these standard keyboard shortcuts, it is most likely an accessibility bug.<span style="mso-spacerun: yes">&nbsp; </span>It goes back to "how would the user know?"&nbsp;<span style="mso-spacerun: yes"> </span>There are standard keyboard shortcuts for a reason: we cannot force users to memorize different keyboard shortcuts for standard tasks among different applications. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana" size="2"></font></strong>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana" size="2">What is High Contrast<O:P></O:P> </font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana" size="2"></font></strong>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana" size="2"></font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana" size="2"></font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Go to Control Panel&nbsp;- Accessibility Options&nbsp;- Display Tab.<span style="mso-spacerun: yes">&nbsp; </span>There's a checkbox for High Contrast.<span style="mso-spacerun: yes">&nbsp; </span>High Contrast will modify OS font size and colors.<span style="mso-spacerun: yes">&nbsp; </span>When high contrast is set,&nbsp;the </font><a href="http://msdn.microsoft.com/library/en-us/msaa/access_2oqa.asp"><font face="Verdana" color="#223355" size="2">High Contrast&nbsp;OS System bit</font></a><font face="Verdana"><font size="2"> is set.&nbsp;<span style="mso-spacerun: yes">&nbsp;</span>If you enjoy working outside on a laptop on sunny days, try using High Contrast Black (large) scheme to improve visibility.<span style="mso-spacerun: yes">&nbsp; </span></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">The difference between checking the High Contrast checkbox and manually customizing the display settings is the OS System bit is set. <span style="mso-spacerun: yes">&nbsp;</span>If the user manually customizes the OS System Colors to look exactly like High Contrast Black (large) scheme, the application must respond just as it would under the High Contrast scheme.<span style="mso-spacerun: yes">&nbsp; </span>This response should occur because all colors are taken from the OS System Settings.<span style="mso-spacerun: yes">&nbsp;</span> </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana" size="2"></font></strong>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana" size="2">How To Test High Contrast </font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana" size="2"></font></strong>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana" size="2"></font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><O:P><font face="Verdana" size="2"></font></O:P></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2">Always turn on High Contrast <i style="mso-bidi-font-style: normal">before </i>starting your application.<span style="mso-spacerun: yes">&nbsp; </span>Supporting in-place High Contrast toggling is more difficult.<span style="mso-spacerun: yes">&nbsp; </span>If the application doesn't respond to High Contrast having been enabled prior to launch, the application is definitely not going to respond to in-place toggling.<span style="mso-spacerun: yes">&nbsp; </span></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Here is a listing of items to check to whether the application is responding <i style="mso-bidi-font-style: normal">correctly </i>to High Contrast.<span style="mso-spacerun: yes">&nbsp; </span>Note I'm taking these items directly from our accessibility test plan that I co-authored. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">High Contrast Items to Verify </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <ol style="MARGIN-TOP: 0in" type="1"> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo5; tab-stops: list .5in"><font face="Verdana" size="2">Verify all UI elements and controls are visible </font></li></ol> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in"><font face="Verdana"><font size="2">If the background changes to black and the font color is hard-coded black, the application or dialog is not usable.<span style="mso-spacerun: yes">&nbsp; </span></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in"><O:P><font face="Verdana" size="2"></font></O:P></p> <ol style="MARGIN-TOP: 0in" type="1" start="2"> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo5; tab-stops: list .5in"><font face="Verdana" size="2">Verify differentiable appearance of inactive and active selection </font></li></ol> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana"><font size="2"><u>Explanation of Focus and Selection</u> </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><strong><font face="Verdana" size="2"></font></strong>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana"><font size="2"><strong>Focus:</strong><span style="mso-spacerun: yes">&nbsp; </span>Only one control or UI Element can take focus at a time.<span style="mso-spacerun: yes">&nbsp; </span>If I were to press a key on the keyboard, the keystroke can only be sent to that control with focus. </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana"><font size="2"><strong>Selection:</strong><span style="mso-spacerun: yes">&nbsp; </span>Multiple controls can have multiple items selected.<span style="mso-spacerun: yes">&nbsp; </span>List boxes can have as many or as few items selected. </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2">&nbsp; </font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: 0.15pt"><font face="Verdana"><font size="2"><strong>Inactive Selection:</strong><span style="mso-spacerun: yes">&nbsp; </span>When focus moves away from the list box (with selected items) to another control, those list box items are said to have inactive selection: </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: 0.15pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: 0.15pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: 0.15pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: 0.15pt"><font face="Verdana"><font size="2"><strong>Active Selection:</strong><span style="mso-spacerun: yes">&nbsp; </span>The selected list box item with focus.<span style="mso-spacerun: yes">&nbsp; </span>Hence, only one item can have Active Selection. </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: 0.15pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: 0.15pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: 0.15pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in"><font face="Verdana" size="2">Regardless whether High Contrast is set, Active Selection and Inactive Selection must correctly respond to their appropriate system colors.<span style="mso-spacerun: yes">&nbsp; </span>Additional testing is required in High Contrast mode, because although it might work in some default Windows display scheme, it isn't guaranteed to work in High Contrast. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <ol style="MARGIN-TOP: 0in" type="1" start="3"> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo5; tab-stops: list .5in"><font face="Verdana" size="2">Verify visual focus is available in high contrast mode </font></li></ol> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana" size="2">Focus must be shown <u>at all times</u>.<span style="mso-spacerun: yes">&nbsp; </span>A great way to find bugs is to tab around the application.<span style="mso-spacerun: yes">&nbsp; </span>If focus ever disappears, it is an Accessibility bug. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <ol style="MARGIN-TOP: 0in" type="1" start="4"> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo5; tab-stops: list .5in"><font face="Verdana" size="2">Verify multiple schemes function </font></li></ol> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana" size="2">All color schemes should work, since font sizes and colors come from the OS.<span style="mso-spacerun: yes">&nbsp; </span>However, due to time and resource constraints, it is important to test with the most commonly-used schemes, like High Contrast Black (large).<span style="mso-spacerun: yes">&nbsp; </span>With some certainty, if the application responds correctly to one scheme, it in theory responds to all, because it is reading the color data from the same location.<span style="mso-spacerun: yes">&nbsp; </span>Only the data is changing values. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <ol style="MARGIN-TOP: 0in" type="1" start="5"> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo5; tab-stops: list .5in"><font face="Verdana" size="2">Verify no text truncation occurs </font></li></ol> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana" size="2">There's some gray area here.<span style="mso-spacerun: yes">&nbsp; </span>The text must be readable; yet, it's never good for text to be truncated.<span style="mso-spacerun: yes">&nbsp; </span>The rule I've been using is to say if more than 20% of the text's height is truncated, it's an accessibility bug. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <ol style="MARGIN-TOP: 0in" type="1" start="6"> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo5; tab-stops: list .5in"><font face="Verdana" size="2">Verify no hard-coded colors </font></li></ol> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana"><font size="2">All colors must come from the OS system settings.<span style="mso-spacerun: yes">&nbsp; </span>If the application has custom colors that cannot be mapped to the OS system settings, there must be a way for the user to customize these colors.<span style="mso-spacerun: yes">&nbsp; </span>For example, in <ST1:MSWTERMS w:st="on">Visual Studio</ST1:MSWTERMS> , we have custom colors for squiggles.<span style="mso-spacerun: yes">&nbsp; </span>Since there isn't an OS system setting for squiggles, we provide a means via Tools Options for users to customize these settings.<span style="mso-spacerun: yes">&nbsp; </span></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana" size="2">What is Assistive Technology Compatibility<O:P></O:P> </font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana" size="2"></font></strong>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana" size="2"></font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><strong><font face="Verdana" size="2"></font></strong></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2">Assistive Technology Compatibility depends on Microsoft Active Accessibility (MSAA) support.<span style="mso-spacerun: yes">&nbsp; </span>If an application does not support MSAA, it will not support Assistive Technology Devices.<span style="mso-spacerun: yes">&nbsp; </span></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><a href="http://www.microsoft.com/enable/training/windowsxp/narratorturnon.aspx"><font face="Verdana" color="#223355" size="2">Narrator</font></a><font face="Verdana" size="2"> is a screen reader that ships with Windows XP.&nbsp; It's great for just learning the basics of how screen readers work.&nbsp; It isn't a full-version or industry-standard, because there are third-parties who have spend years on end producing screen reader technologies.&nbsp; Most people who are blind will use one of these third-parties products.&nbsp;&nbsp;Make sure you are testing with an industry-standard screen reader, but it doesn't hurt to try out Narrator to become more familiar with how screen readers work.&nbsp; Also, it'll make you appreciate an industry-standard screen reader even more!</font></span><font face="Verdana" size="2"> </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana" size="2"></font></u>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2"><u>How MSAA Works for Retrieving a Standard Win32 Button Accessible Name</u> </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Client (Screen Reader) asks MSAA for a pointer to the IAccessible object via </font><a href="http://msdn.microsoft.com/library/en-us/msaa/msaaccrf_2r7b.asp"><font face="Verdana" color="#223355" size="2">AccessibleObjectFromWindow</font></a><font face="Verdana" size="2">, </font><a href="http://msdn.microsoft.com/library/en-us/msaa/msaaccrf_8zqs.asp"><font face="Verdana" color="#223355" size="2">AccessibleObjectFromEvent</font></a><font face="Verdana" size="2">, and so forth....&nbsp; MSAA asks the server (aka the button) for a pointer to the IAccessible implementation.&nbsp; Since it is standard control and doesn't have its own IAccessible implementation, it returns 0.&nbsp; In this case, MSAA uses a proxy to return methods and property values.&nbsp; For </font><a href="http://msdn.microsoft.com/library/en-us/msaa/msaaccrf_6asl.asp"><font face="Verdana" color="#223355" size="2">IAccessible::get_accName</font></a><font face="Verdana" size="2">, MSAA returns the value from </font><a href="http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/getwindowtext.asp"><font face="Verdana" color="#223355" size="2">GetWindowText()</font></a><font face="Verdana" size="2">. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2"><u>How MSAA Works for a Custom-Drawn Button</u> </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana" size="2"></font></u></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Client (Screen Reader) asks MSAA for a pointer to the IAccessible object via </font><a href="http://msdn.microsoft.com/library/en-us/msaa/msaaccrf_2r7b.asp"><font face="Verdana" color="#223355" size="2">AccessibleObjectFromWindow</font></a><font face="Verdana" size="2">, </font><a href="http://msdn.microsoft.com/library/en-us/msaa/msaaccrf_8zqs.asp"><font face="Verdana" color="#223355" size="2">AccessibleObjectFromEvent</font></a><font face="Verdana" size="2">, and so forth....&nbsp; MSAA asks the server (aka the button) for a pointer to the IAccessible implementation.&nbsp; Since it is custom control, the developer has implemented IAccessible, so a pointer to this implementation is returned.&nbsp; The client calls </font><a href="http://msdn.microsoft.com/library/en-us/msaa/msaaccrf_6asl.asp"><font face="Verdana" color="#223355" size="2">IAccessible::get_accName</font></a><font face="Verdana" size="2">&nbsp;on the interface pointer and the value set by the developer is returned.<span style="mso-spacerun: yes">&nbsp; </span>Note here that it might not be the same as </font><a href="http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/getwindowtext.asp"><font face="Verdana" color="#223355" size="2">GetWindowText()</font></a><font face="Verdana" size="2">, although it must be.<span style="mso-spacerun: yes">&nbsp; </span>Custom controls are <strong>prime</strong> targets for Accessibility testing. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2"><u>How MSAA Works for a Owner-Drawn Button</u> </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">A slight combination of both Standard and Custom.<span style="mso-spacerun: yes">&nbsp; </span>It works exactly the same way as Standard.<span style="mso-spacerun: yes">&nbsp; </span>When the client asks for the Name, </font><a href="http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/getwindowtext.asp"><font face="Verdana" color="#223355" size="2">GetWindowText()</font></a><font face="Verdana" size="2"> may return a null BSTR.<span style="mso-spacerun: yes">&nbsp; </span>All controls, especially visible controls, must support name.<span style="mso-spacerun: yes">&nbsp; </span>Another great target for Accessibility testing. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Once the client has a pointer to the Accessible object, the Assistive Technology will perform actions based on the object's role.<span style="mso-spacerun: yes">&nbsp; </span>This value is returned by </font><a href="http://msdn.microsoft.com/library/en-us/msaa/msaaccrf_002t.asp"><font face="Verdana" color="#223355" size="2">IAccessible::get_accRole </font></a><font face="Verdana" size="2">that maps to a structure of known MSAA Role types, like push button or combo box.<span style="mso-spacerun: yes">&nbsp; </span>It is possible for a server to return its own customer role type; however, will the Assistive Technology know how to interact with the controls?<span style="mso-spacerun: yes">&nbsp; </span>EVERYTHING IS BASED ON THE MSAA ROLE. Seriously.&nbsp; If the role is wrong, don't expect anything to work. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana" size="2"></font></u></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana" size="2">How To Test for Assistive Technology Compatibility<O:P></O:P> </font></u></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana"><font size="2"><span style="TEXT-DECORATION: none">&nbsp;</span><u></u> </font></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2">The MSAA information must be as correct as possible to support Assistive Technologies.<span style="mso-spacerun: yes">&nbsp; </span>So, the first thing to test is MSAA.<span style="mso-spacerun: yes">&nbsp; </span></font></font><a href="http://msdn.microsoft.com/library/en-us/msaa/msaaccgd_6alu.asp"><font face="Verdana" color="#223355" size="2">AccExplorer </font></a><font face="Verdana"><font size="2">is a great tool to view the IAccessible properties and method of a particular control; however, there is no mechanism to tell you if the properties or methods are supported correctly.<span style="mso-spacerun: yes">&nbsp; </span>AccExplorer has its own verifications associated with it.<span style="mso-spacerun: yes">&nbsp; </span>Unfortunately, these verifications were written with an Assistive Technology vendor in mind.<span style="mso-spacerun: yes">&nbsp; </span>For example, on a button, the test will log a failure if DISP_E_MEMEBERNOTFOUND is returned for ::get_accValue.<span style="mso-spacerun: yes">&nbsp; </span>This is actually by design, because a button does not support value.<span style="mso-spacerun: yes">&nbsp; </span>If a method is not supported, return DISP_E_MEMBERNOTFOUND.<span style="mso-spacerun: yes">&nbsp; </span></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">In order to determine which properties and methods must be supported, review the </font><a href="http://msdn.microsoft.com/library/en-us/msaa/msaapndx_2a05.asp"><font face="Verdana" color="#223355" size="2">UI Element Referece </font></a><font face="Verdana" size="2">doc contained in the </font><a href="http://msdn.microsoft.com/library/en-us/msaa/msaastart_9w2t.asp"><font face="Verdana" color="#223355" size="2">MSAA SDK Docs</font></a><font face="Verdana" size="2">.&nbsp;<span style="mso-spacerun: yes"> </span>This website describes a virtual contract between MSAA and Assistive Technology vendors.<span style="mso-spacerun: yes">&nbsp; </span>Even if a server were to set that value property on a push button, the Assistive Technology device wouldn t read it because, from the docs, buttons are designed not to support value. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2">Once the MSAA information is verified, the tester can moved on to using the Assistive Technology device.<span style="mso-spacerun: yes">&nbsp; </span>I am most familiar with screen readers, so I will limit this discussion to just them.<span style="mso-spacerun: yes">&nbsp; </span></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">First and foremost, the tester must become familiar with all of the common keyboard shortcuts.<span style="mso-spacerun: yes">&nbsp; </span>Second, and probably equally important, the tester should work with someone who uses the Assistive Technology on a routine basis.<span style="mso-spacerun: yes">&nbsp; </span>Even if there is no one to work with, it is still possible to test with the Assistive Technology.<span style="mso-spacerun: yes">&nbsp; </span>It just requires a deeper understanding of what all the keyboard shortcuts do.&nbsp;&nbsp; Lastly, the tester can only use the keyboard.&nbsp; A user who is blind will not be able to use the mouse. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Once the Screen Reader is installed, the tester opens up a common dialog (like start -&gt; Run dialog) and interacts with it by tabbing to each control.<span style="mso-spacerun: yes">&nbsp; </span>The tester trains his/her ear to listen for patterns.<span style="mso-spacerun: yes">&nbsp; </span>An example pattern a screen reader could speak is &lt;control name&gt; &lt;control role&gt; &lt;additional properties based on role&gt;.<span style="mso-spacerun: yes">&nbsp; </span>If focus were on the Run Dialog's push button, the tester listens for "OK PushButton."<span style="mso-spacerun: yes"> </span>If focus were on the combo box, the tester listens for "Open: ComoBox notepad.exe" , where notepad.exe is the text within the combo box's edit box. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">When doing Screen Reader testing, turn off the monitor.<span style="mso-spacerun: yes">&nbsp; </span>It forces the tester to really listen to what the screen reader is saying.<span style="mso-spacerun: yes">&nbsp; </span>And even then that is not enough.<span style="mso-spacerun: yes">&nbsp; </span>As I've used VS for days on end for the past 4 years, I've become so bias towards how things should work, it is easy for me to miss certain bugs.<span style="mso-spacerun: yes">&nbsp; </span>For example, I might hear the screen reader read the text for a link, but not realize that the screen reader did not say "link" at the end.<span style="mso-spacerun: yes">&nbsp; </span>I am bias because I know it is a link, so I accidentally stop listening once it is finished reading the name of the link.<span style="mso-spacerun: yes">&nbsp; </span>Turning off your monitor helps break that sense of comfort knowing where focus is at, so you are forced to listen to things more carefully. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2">From my experiences, there are two categories of Assistive Technology bugs <i style="mso-bidi-font-style: normal">against the server (aka, the application itself). </i></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><em><font face="Verdana" size="2"></font></em>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><em><font face="Verdana" size="2"></font></em></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <ol style="MARGIN-TOP: 0in" type="1"> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo5; tab-stops: list .5in"><font face="Verdana" size="2">Functionality bugs like dangling pointers, infinite loops, and so forth...&nbsp; </font></li></ol> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in"><font face="Verdana"><font size="2">Example is when the Screen Reader tries to access inforamtion from a dangling pointer.&nbsp; The application crashed due to a null pointer reference exception.<span style="mso-spacerun: yes">&nbsp; </span></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in"><O:P><font face="Verdana" size="2"></font></O:P></p> <ol style="MARGIN-TOP: 0in" type="1" start="2"> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo5; tab-stops: list .5in"><font face="Verdana" size="2">MSAA bugs&nbsp; </font></li></ol> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana" size="2">Example is a push button that doesn't have a Name.&nbsp; This is the same thing as an OK button not having a Caption.&nbsp; </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 35.4pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">The tricky part to Assistive Technology testing is knowing when it is a bug against the application and when it is a bug against the Assistive Technology.<span style="mso-spacerun: yes">&nbsp; </span>Historically, MSAA&nbsp;has not&nbsp;been reliable due to poor or no implementation for custom controls, so ATs use hooks, one of which is an Off-Screen Model, that queries for information outside of MSAA.<span style="mso-spacerun: yes">&nbsp; </span>Knowing if, how, and when an Assistive Technology uses such hooks is important for figuring out who gets the bug.<span style="mso-spacerun: yes">&nbsp; </span>If the MSAA information is correct (and it is not a functionality bug), there is a high probability that it will go against the Assistive Technology. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">In conclusion, I have stated the&nbsp;"what" and&nbsp;"how" of Accessibility testing for keyboard, high contrast, and screen reader support.<span style="mso-spacerun: yes">&nbsp; </span>This testament is an honest collection of the knowledge and experiences I've accumulated in the past two years. <span style="mso-spacerun: yes">&nbsp;</span>I hope this doc will be helpful for other testers who are starting accessibility testing.<span style="mso-spacerun: yes">&nbsp; </span>Good luck and happy Accessibility bug hunting! </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">I look forward to your feedback! </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Thanks for reading, </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">-sara </font></p>]]></content:encoded>
    </item>
    <item>
      <title>Visual Studio Core Team's Accessibility Lab Tour Activity</title>
      <link>https://docs.microsoft.com/archive/blogs/vsaccessibility/visual-studio-core-teams-accessibility-lab-tour-activity</link>
      <pubDate>Mon, 20 Sep 2004 18:41:00 GMT</pubDate>
      <dc:creator><![CDATA[vsaccessibility]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vsaccessibility/2004/09/20/visual-studio-core-teams-accessibility-lab-tour-activity/</guid>
      <description><![CDATA[What s the Accessibility Lab?  The Accessibility Technology Group on campus&nbsp;has a lab with...]]></description>
      <content:encoded><![CDATA[<p><u><font face="Verdana" size="2">What s the Accessibility Lab?<?XML:NAMESPACE PREFIX = O /><O:P></O:P> </font></u></p> <p><font face="Verdana" size="2">The Accessibility Technology Group on campus&nbsp;has a lab with numerous&nbsp;licensed-versions of Assistive Technologies (ATs), including Motion Trackers, Screen Readers, Screen Magnifiers, Braille Displays, Speech Recognition, and so forth.&nbsp;&nbsp;Their lab is opened to any team or person on Microsoft campus&nbsp;interested in using Assistive Technology.&nbsp; Using their lab is so straight-forward that I was a little embarrassed that I had asked Mike, their lab manager, to "hold-my-hand" for the first few OS installs.&nbsp; But, Mike is cool and he didn't mind. </font></p> <p><u><font face="Verdana" size="2">Why did we go there?<O:P></O:P> </font></u></p> <p><font face="Verdana" size="2">I had wanted my team to be able to use different Assistive Technology devices to perform basic <?XML:NAMESPACE PREFIX = ST1 /><ST1:MSWTERMS w:st="on">Visual Studio</ST1:MSWTERMS> tasks, in order to increase Accessibility awareness and to educate how Assistive Technologies and <ST1:MSWTERMS w:st="on">Visual Studio</ST1:MSWTERMS> work together. </font></p> <p><u><font face="Verdana" size="2">What did we do?<O:P></O:P> </font></u></p> <p><font face="Verdana" size="2">We focused mainly on Screen Readers and Screen Magnifiers, and a couple of Motion Trackers to really open people's minds.&nbsp; Due to the nature of our product, <ST1:MSWTERMS w:st="on">Visual Studio</ST1:MSWTERMS> 's targeted disability persona is blind or low-vision.&nbsp; We're a visual product, hence "Visual" Studio.&nbsp; We don't exclusively rely on sound to convey information.&nbsp; Sure, you might hear a beep when there's a build error, but you'll see a build error message box, squiggles, and errors in the task list.&nbsp;&nbsp;A person who is blind or has low-vision usually uses the keyboard exclusively, so we are already working on the support for people who cannot use the mouse or require a specialized keyboard.&nbsp; </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2">I installed Whidbey on 4 different screen reader stations, 2 motion tracker stations, and 2 screen magnifier stations.<span style="mso-spacerun: yes">&nbsp; </span>I asked people to form teams of 2 gathered at each station.<span style="mso-spacerun: yes">&nbsp; </span>Their task was to create an Accessible Application using Assistive Technologies.<span style="mso-spacerun: yes">&nbsp; </span>They were give hard-copies of the MSDN Whitepaper:<span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"><span style="mso-spacerun: yes">&nbsp; </span><a href="http://msdn.microsoft.com/library/en-us/vbcon/html/vbwlkwalkthroughcreatingaccessiblewindowsapplication.asp"><font color="#223355">Walkthrough: Creating an Accessible Windows Application</font></a> </span>to better simulate a real user experience.<span style="mso-spacerun: yes">&nbsp; </span>Some reported that it was a useful activity; others said they liked unstructured activity.<span style="mso-spacerun: yes">&nbsp; </span>The important part was that everyone worked with an Assistive Technology device.<span style="mso-spacerun: yes">&nbsp; </span></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2"><O:P>&nbsp;</O:P> </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">By the way, the folks who worked with screen readers had 5 minutes to get oriented, and then I came by and turned off their monitors. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2"><O:P>&nbsp;</O:P> </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana" size="2">Creating a Hello World App without the mouse or a keyboard<O:P></O:P> </font></u></p> <p><font face="Verdana"><font size="2">While we waited for the rest of the participants to arrive, one of our teammates, Boyan, demo'ed for us how to create a WinForm's Application with a button on the form that when pressed displayed a "Hello World' Message Box.&nbsp; He did all of this using a Motion Tracker device.&nbsp; You might think what's the big deal, but if you've never worked with a motion tracker, it's designed for someone who is paralyzed or partially-paralyzed.&nbsp; To use this particular motion tracker, you wear a silver circular sticker on your nose (so you don't forget to take it off).&nbsp; The Motion Tracker tracks this sticker and the cursor basically goes where your nose goes.&nbsp; To click, you hover over a floating tool window on the desktop that has buttons for Single Click, Double Click, Left Button, Right Button, Scroll, etc.&nbsp; If you hover over for a second or two, the corresponding button on the floating tool window becomes depressed, so you can impersonate that mouse feature.&nbsp; There's an on-screen keyboard that allows you to simulate typing using that same technique to depress a key on the keyboard.<span style="mso-spacerun: yes">&nbsp; </span>According to Boyan, the most difficult part was trying to type.<span style="mso-spacerun: yes">&nbsp; </span>As people came into the lab and gathered behind him, you could see everyone slowly start swaying trying to get him to turn his head ever so slightly.<span style="mso-spacerun: yes">&nbsp; </span>A lot of people were amazed to see this technology used with our product.<span style="mso-spacerun: yes">&nbsp; </span></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana" size="2">Our Guest Speaker<O:P></O:P> </font></u></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2"><O:P>&nbsp;</O:P> </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Almost an hour later, after everyone had a chance to really work with an Assistive Technology and try to perform whatever task they were working on, we had a guest speaker stop by.<span style="mso-spacerun: yes">&nbsp; </span>Mia, a tester from the Accessibility Technology Group, uses screen readers to perform her job.<span style="mso-spacerun: yes">&nbsp; </span>She sat down with us and I walked her through the same exercise that Boyan had completed earlier with the motion tracker.<span style="mso-spacerun: yes">&nbsp; </span>Whenever Mia wasn t sure where focus was in the IDE, I explained where she was.<span style="mso-spacerun: yes">&nbsp; </span>In addition, I asked her what sort of information we could provide in these states.<span style="mso-spacerun: yes">&nbsp;&nbsp; </span>For example, our previous out-of-box state was to have focus on the solution explorer.<span style="mso-spacerun: yes">&nbsp; </span>Since the solution explorer is an empty tool window in this state, because there is no project opened by default out of box, the screen reader only replied, Solution explorer .<span style="mso-spacerun: yes">&nbsp; </span>Immediately Mia tried to tab around, but we all knew that nothing was going to happen.<span style="mso-spacerun: yes">&nbsp; </span>I looked at my team shaking their heads, like wow, we have some work to do.<span style="mso-spacerun: yes">&nbsp; </span>Whenever I could, I glanced at the audience.<span style="mso-spacerun: yes">&nbsp; </span>Some were looks of surprise, like, How can she listen to her screen reader that quickly. <span style="mso-spacerun: yes">&nbsp; </span>Others were looks of embarrassment.<span style="mso-spacerun: yes">&nbsp; </span>And a few had looks of determination to make our IDE more accessible.<span style="mso-spacerun: yes">&nbsp; </span>Mia had a captive audience the entire time.<span style="mso-spacerun: yes">&nbsp; </span>After 30 minutes, I had to end my first semi-usability study, because it seemed that people would have kept Mia there for another hour or so just asking questions. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2"><O:P>&nbsp;</O:P> </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana" size="2">Did the activity have an effect?<O:P></O:P> </font></u></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana" size="2"></font></u>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">While I was walking down the hallway back to my office, I heard one of our devs, who had attended our activity,&nbsp;explain to another dev, who did not attend our activity, how he needed to improve the accessibility of his feature. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2"><u>Thank You's</u> </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2"><O:P>A big thank you to Mia for&nbsp;being our guest speaker.&nbsp;&nbsp;Your demo&nbsp;was the highlight of the activity.</O:P> </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P></O:P><font face="Verdana" size="2">&nbsp; </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2"><O:P>Another big thank you to Mike, the lab manager, for his help setting up the lab.</O:P> </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P></O:P><font face="Verdana" size="2">&nbsp; </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2"><O:P>And one more big thank you&nbsp;to Matt, from the Whitehorse team, for being the first one from our division to organize such a tour for all the Accessibility QA Representatives. If Matt hadn't taken the initiative, there's a good chance this activity wouldn't have come together.</O:P> </font></font></p>]]></content:encoded>
    </item>
    <item>
      <title>Watch Out for these Unpopular Accessibility Bugs</title>
      <link>https://docs.microsoft.com/archive/blogs/vsaccessibility/watch-out-for-these-unpopular-accessibility-bugs</link>
      <pubDate>Mon, 20 Sep 2004 18:40:00 GMT</pubDate>
      <dc:creator><![CDATA[vsaccessibility]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vsaccessibility/2004/09/20/watch-out-for-these-unpopular-accessibility-bugs/</guid>
      <description><![CDATA[I attended a few get-togethers with some Assistive Technology vendors a while back when they were...]]></description>
      <content:encoded><![CDATA[<div class="entryBody"> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><font face="Verdana"><font size="2">I attended a few get-togethers with some Assistive Technology vendors a while back when they were on campus for an Accessibility conference.<span style="mso-spacerun: yes">&nbsp; </span>While eating dinner with one particular AT vendor, I had asked him what we, <?XML:NAMESPACE PREFIX = ST1 /><ST1:MSWTERMS w:st="on">Visual Studio</ST1:MSWTERMS> , could do to improve our Assistive Technology compatibility story.<span style="mso-spacerun: yes">&nbsp; </span>Next thing I knew, I was writing frantically on paper usually used for receipts. <?XML:NAMESPACE PREFIX = O /><O:P></O:P></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><font face="Verdana"><font size="2"><O:P>&nbsp;</O:P> </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; mso-layout-grid-align: none"><font face="Verdana"><font size="2"><span style="mso-list: Ignore">1.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Consider allowing Graphics to take focus.<span style="mso-spacerun: yes">&nbsp; </span>If there s a control the mouse user can interact with, the keyboard user will most likely want to interact with that control in a similar fashion.<span style="mso-spacerun: yes">&nbsp; </span>Sure, there are workarounds, like telling the user to go to the menus to find the same functionality.<span style="mso-spacerun: yes">&nbsp; </span>But, depending on what the control does, it could mean a lot of extra steps, especially if the control is frequently used.<span style="mso-spacerun: yes">&nbsp; </span><O:P></O:P></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><font face="Verdana"><font size="2"><O:P>&nbsp;</O:P> </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-layout-grid-align: none"><font face="Verdana" size="2">2.<span style="mso-tab-count: 1">&nbsp;&nbsp; </span>All graphics should have an AA object.<span style="mso-spacerun: yes">&nbsp; </span>If it is too costly for the graphic to have an AA object, at least draw it as a bitmap.<span style="mso-spacerun: yes">&nbsp; </span>Never just paint graphics.<span style="mso-spacerun: yes">&nbsp; </span>These are black holes to ATs.<O:P></O:P> </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; mso-layout-grid-align: none"><font face="Verdana"><font size="2"><O:P>&nbsp;</O:P> </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-layout-grid-align: none"><font face="Verdana" size="2">3.<span style="mso-tab-count: 1">&nbsp;&nbsp; </span>Graphics should have a bitmap associated with it, especially for those that don t have AA objects or are just bitmaps.<span style="mso-spacerun: yes">&nbsp; </span>If the graphic is painted, it is critical that it have a tooltip.<span style="mso-spacerun: yes">&nbsp; </span>This at least gives ATs a chance to identify the graphic.<O:P></O:P> </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><font face="Verdana"><font size="2"><O:P>&nbsp;</O:P> </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-layout-grid-align: none"><font face="Verdana"><font size="2">4.<span style="mso-tab-count: 1">&nbsp;&nbsp; </span>Correct cursor location is returned.&nbsp; For example, the (x,y) screen coordinates for an italicized cursor is at the baseline.&nbsp; I was told by the AT vendor that Word does not return Italicized cursor coordinates correctly, but I have not investigated this issue to confirm this at this time.<span style="mso-spacerun: yes">&nbsp; </span><O:P></O:P></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><font face="Verdana"><font size="2"><O:P>&nbsp;</O:P> </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-layout-grid-align: none"><font face="Verdana" size="2">5.<span style="mso-tab-count: 1">&nbsp;&nbsp; </span>After selecting text, the cursor must not disappear.&nbsp; The cursor must continue to blink based on OS Settings.&nbsp; I was told by the AT vendor that Notepad does this correctly;&nbsp;Word does not, but I have not investigated this issue to confirm this at this time.&nbsp; ATs may have to write special logic to determine cursor location.<O:P></O:P> </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><font face="Verdana"><font size="2"><O:P>&nbsp;</O:P> </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-layout-grid-align: none"><font face="Verdana" size="2">6.<span style="mso-tab-count: 1">&nbsp;&nbsp; </span>Use win32 API DrawFocusRect, even if you ve drawn your own focus rect.<span style="mso-spacerun: yes">&nbsp; </span>I was told by the AT Vendor that there s a parameter you can pass in to draw the focus rectangle as invisible, but I didn t see it in the docs.<span style="mso-spacerun: yes">&nbsp; </span>It doesn t mean that it isn t possible.<span style="mso-spacerun: yes">&nbsp; </span>The AT s Off Screen Model goes by the focus rectangle drawn by DrawFocusRect, so if the AT can t find focus, although it is visible on the screen, this is the most likely cause.<O:P></O:P> </font></p></div>]]></content:encoded>
    </item>
    <item>
      <title>Normal, Unavailable, Offscreen, and Invisible AA States Explained</title>
      <link>https://docs.microsoft.com/archive/blogs/vsaccessibility/normal-unavailable-offscreen-and-invisible-aa-states-explained</link>
      <pubDate>Mon, 20 Sep 2004 18:39:00 GMT</pubDate>
      <dc:creator><![CDATA[vsaccessibility]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vsaccessibility/2004/09/20/normal-unavailable-offscreen-and-invisible-aa-states-explained/</guid>
      <description><![CDATA[I'm often asked about the relationship among Normal (same as Visible), Unavailable, and Offscreen,...]]></description>
      <content:encoded><![CDATA[<p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">I'm often asked about the relationship among <?XML:NAMESPACE PREFIX = ST1 /><ST1:PLACE w:st="on"><ST1:CITY w:st="on">Normal</ST1:CITY> </ST1:PLACE>(same as Visible), Unavailable, and Offscreen, and Invisible AA States.<span style="mso-spacerun: yes">&nbsp; </span>Here's my best guess at an explanation. </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><?XML:NAMESPACE PREFIX = O /><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana" size="2">What the docs say<O:P></O:P> </font></u></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana" size="2"></font></u>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana" size="2"></font></u></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Starting with the MSAA SDK Docs on </font><a href="http://msdn.microsoft.com/library/en-us/msaa/msaaccrf_8y2b.asp"><font face="Verdana" color="#002c99" size="2">Object State Constants</font></a><font face="Verdana" size="2">, the following terms are defined as follows: </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <ul style="MARGIN-TOP: 0in" type="disc"> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"><a name="_msaa_state_system_normal"></a><font face="Verdana"><font size="2"><b style="mso-bidi-font-weight: normal"><i style="mso-bidi-font-style: normal">STATE_SYSTEM_NORMAL -</i></b><i style="mso-bidi-font-style: normal"> Indicates that the object does not have another state assigned to it. <O:P></O:P></i></font></font></li></ul> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in"><i style="mso-bidi-font-style: normal"><O:P><font face="Verdana" size="2"></font></O:P></i></p> <ul style="MARGIN-TOP: 0in" type="disc"> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"><font face="Verdana"><font size="2"><b style="mso-bidi-font-weight: normal"><i style="mso-bidi-font-style: normal">STATE_SYSTEM_INVISIBLE -</i></b><i style="mso-bidi-font-style: normal"> The object is programmatically hidden. For example, menu itmes are programmatically hidden until a user activates the menu. Because objects with this state are not available to users, client applications should not communicate information about the object to users. However, if client applications find an object with this state, they should check to see if STATE_SYSTEM_OFFSCREEN is also set. If this second state is defined, then clients can communicate the information about the object to users. For example, a list box can have both STATE_SYSTEM_INVISIBLE and STATE_SYSTEM_OFFSCREEN set. In this case, the client application can communicate all items in the list to users. <O:P></O:P></i></font></font></li></ul> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><i style="mso-bidi-font-style: normal"><O:P><font face="Verdana" size="2"></font></O:P></i></p> <ul style="MARGIN-TOP: 0in" type="disc"> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"><a name="_msaa_state_system_unavailable"></a><font face="Verdana"><font size="2"><b style="mso-bidi-font-weight: normal"><i style="mso-bidi-font-style: normal">STATE_SYSTEM_UNAVAILABLE - </i></b><i style="mso-bidi-font-style: normal">The object is unavailable. <b style="mso-bidi-font-weight: normal"><O:P></O:P></b></i></font></font></li></ul> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><b style="mso-bidi-font-weight: normal"><i style="mso-bidi-font-style: normal"><O:P><font face="Verdana" size="2"></font></O:P></i></b></p> <ul style="MARGIN-TOP: 0in" type="disc"> <li class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"><a name="_msaa_state_system_offscreen"></a><font face="Verdana"><font size="2"><b style="mso-bidi-font-weight: normal"><i style="mso-bidi-font-style: normal">STATE_SYSTEM_OFFSCREEN -</i></b><i style="mso-bidi-font-style: normal"> The object is clipped, or scrolled out of view, but not programmatically hidden. If the user makes the viewport larger, more of the object will be visible on the computer screen.<O:P></O:P> </i></font></font></li></ul> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana" size="2">Simple explanations for each term<O:P></O:P> </font></u></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana" size="2"></font></u></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana" size="2"></font></u></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><ST1:CITY w:st="on"><ST1:PLACE w:st="on"><b style="mso-bidi-font-weight: normal"></b></ST1:PLACE></ST1:CITY><font face="Verdana" size="2">&nbsp;</font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2"><ST1:CITY w:st="on"><ST1:PLACE w:st="on"><b style="mso-bidi-font-weight: normal">Normal</b> </ST1:PLACE></ST1:CITY>just implies that the control is visible and available.<span style="mso-spacerun: yes">&nbsp; </span>If no state bits are set by the server developer, the out parameter for the IAccessible::get_accState is 0. <span style="mso-spacerun: yes">&nbsp;</span>When the client calls GetStateText for a 0 out parameter, <ST1:CITY w:st="on"><ST1:PLACE w:st="on">Normal</ST1:PLACE> </ST1:CITY>is returned.<span style="mso-spacerun: yes">&nbsp; </span>Obviously, <ST1:CITY w:st="on"><ST1:PLACE w:st="on">Normal</ST1:PLACE> </ST1:CITY>is #defined as 0. </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><b style="mso-bidi-font-weight: normal"><font face="Verdana" size="2"></font></b>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2"><b style="mso-bidi-font-weight: normal">Unavailable</b> means that the control is either unavailable or disabled.<span style="mso-spacerun: yes">&nbsp; </span>For example, the Start -&gt; Run dialog s OK button is unavailable when the combo box is empty.<span style="mso-spacerun: yes">&nbsp; </span>Although I can visually see the button, it is grayed-out and disabled, such that I cannot press the button (or perform the default action). </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><b style="mso-bidi-font-weight: normal"><font face="Verdana" size="2"></font></b>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2"><b style="mso-bidi-font-weight: normal">Offscreen</b> occurs when the object is either normal or unavailable, but it has been scrolled off the screen.<span style="mso-spacerun: yes">&nbsp; </span>Increase the screen resolution or window size would cause the object to come into view.<span style="mso-spacerun: yes">&nbsp; </span></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2">An <b style="mso-bidi-font-weight: normal">Invisible </b>object is programmatically hidden, implying that I cannot see it on the screen.<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Although these explanations seem simple enough on their own, combinations of such states are much more interesting... </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana" size="2"></font></u></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana" size="2"></font></u></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana" size="2"></font></u>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana" size="2">Possible combinations<O:P></O:P> </font></u></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana" size="2"></font></u></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana" size="2"></font></u></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><O:P><span style="TEXT-DECORATION: none"><font face="Verdana" size="2"></font></span></O:P></u></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><ST1:CITY w:st="on"><ST1:PLACE w:st="on"><b style="mso-bidi-font-weight: normal"><font face="Verdana" size="2"></font></b></ST1:PLACE></ST1:CITY></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><ST1:CITY w:st="on"><ST1:PLACE w:st="on"><b style="mso-bidi-font-weight: normal"></b></ST1:PLACE></ST1:CITY><font face="Verdana" size="2">&nbsp;</font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2"><ST1:CITY w:st="on"><ST1:PLACE w:st="on"><b style="mso-bidi-font-weight: normal">Normal</b> </ST1:PLACE></ST1:CITY>cannot be and'ed with any other state by definition. </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><b style="mso-bidi-font-weight: normal"><font face="Verdana" size="2"></font></b>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2"><b style="mso-bidi-font-weight: normal">Offscreen and Unavailable:</b><span style="mso-spacerun: yes">&nbsp; </span>The control is unavailable, but is scrolled off the screen.<span style="mso-spacerun: yes">&nbsp; </span>In the previous example, suppose the Run dialog were resizeable.<span style="mso-spacerun: yes">&nbsp; </span>If I were to resize the dialog such that the unavailable OK button were offscreen, I would expect this button to have both Offscreen and Unavailable states set. </font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><b style="mso-bidi-font-weight: normal"><font face="Verdana" size="2"></font></b>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2"><b style="mso-bidi-font-weight: normal">Invisible and Unavailable:</b><span style="mso-spacerun: yes">&nbsp; </span>In my opinion, a control would never have these two bits set at the same time.<span style="mso-spacerun: yes">&nbsp; </span>Invisible seems to have a higher precedence than unavailable.<span style="mso-spacerun: yes">&nbsp; </span>If a control were invisible, it isn t on the screen.<span style="mso-spacerun: yes">&nbsp; </span>An unavailable control must be on the screen to be grayed-out.<span style="mso-spacerun: yes">&nbsp; </span></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Having said that, a member of my team today gave me an interesting scenario where this could be true.<span style="mso-spacerun: yes">&nbsp; </span>Suppose a control were unavailable and the user performed some action that caused it to disappear.<span style="mso-spacerun: yes">&nbsp; </span>If the user were to revert this action (suppose unchecking a checkbox), the control would reappear in an unavailable state.<span style="mso-spacerun: yes">&nbsp; </span>He concluded that both bits should be set.<span style="mso-spacerun: yes">&nbsp; </span>I kinda disagree with this, considering a control cannot be invisible and grayed-out at the same time.<span style="mso-spacerun: yes">&nbsp; </span>However, I&nbsp;hope that the client would check for the invisible bit before checking for any unavailable or offscreen bits, which leads me to the last combination... </font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><b style="mso-bidi-font-weight: normal"><font face="Verdana" size="2"></font></b></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><b style="mso-bidi-font-weight: normal"><font face="Verdana" size="2"></font></b></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><b style="mso-bidi-font-weight: normal"><font face="Verdana" size="2"></font></b>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2"><b style="mso-bidi-font-weight: normal">Invisible and Offscreen: </b>The definitions from the MSAA SDK docs, as referenced above, state that<span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </span></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><i style="mso-bidi-font-style: normal"><font face="Verdana"><font size="2">However, if client applications find an object with this state, they should check to see if STATE_SYSTEM_OFFSCREEN is also set. If this second state is defined, then clients can communicate the information about the object to users. For example, a list box can have both STATE_SYSTEM_INVISIBLE and STATE_SYSTEM_OFFSCREEN set. In this case, the client application can communicate all items in the list to users. <O:P></O:P></font></font></i></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2">Offscreen means the control is programmatically accessible, but invisible means the control is not programmatically accessible.<span style="mso-spacerun: yes">&nbsp; </span>Seems like there's a paradox here.<span style="mso-spacerun: yes">&nbsp; </span></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><span style="mso-spacerun: yes"><font face="Verdana" size="2"></font></span></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><O:P><font face="Verdana" size="2"></font></O:P></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2"></font>&nbsp;</p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">I've found an interesting issue in the Windows Explorer -&gt; View -&gt; Folders tree view.<span style="mso-spacerun: yes">&nbsp; </span>The child tree view item of a collapsed parent item (suppose the item has been expanded and collapsed at least once to generate the AA object) has the Invisible and Offscreen bits set.<span style="mso-spacerun: yes">&nbsp; </span>However, so does any tree view item (child or<span style="mso-spacerun: yes">&nbsp; </span>parent) that is offscreen.<span style="mso-spacerun: yes">&nbsp; </span>In my opinion, it seems that clients need to check for the offscreen bit whenever invisible is set to determine if the object is really invisible or just offscreen in cases such as this one. </font></p> <p><font face="Verdana"><font size="2"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-US; mso-bidi-language: AR-SA">Hope this helps!</span> </font></font></p>]]></content:encoded>
    </item>
    <item>
      <title>Questions and answers about AA-Naming your control</title>
      <link>https://docs.microsoft.com/archive/blogs/vsaccessibility/questions-and-answers-about-aa-naming-your-control</link>
      <pubDate>Mon, 20 Sep 2004 18:39:00 GMT</pubDate>
      <dc:creator><![CDATA[vsaccessibility]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vsaccessibility/2004/09/20/questions-and-answers-about-aa-naming-your-control/</guid>
      <description><![CDATA[I’m often asked “What's the correct name for this control?” There are many variations to this...]]></description>
      <content:encoded><![CDATA[<p><font face="Verdana" size="2">I’m often asked “What's the correct name for this control?” There are many variations to this question, for example:</font></p> <p style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"><font face="Verdana"><font size="2"><span style="mso-list: Ignore">1.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Does this control need an AA name?</font></font></p> <p style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"><font face="Verdana"><font size="2"><span style="mso-list: Ignore">2.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Do we change the AA name if a control’s caption or label changes?</font></font></p> <p style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; tab-stops: list .5in"><font face="Verdana"><font size="2"><span style="mso-list: Ignore">3.<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Do we add the AA description to the AA name, in order to “force” the screen reader to read it?</font></font></p> <p><font face="Verdana" size="2">Yes, yes, and no.</font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana"><font size="2">Explanation #1<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></font></font></u></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">All controls need to have a name, unless explicitly stated in the MSAA SDK.<span style="mso-spacerun: yes">&nbsp; </span>For example, a Win32 standard status bar does not have an AA name, but its children must support name.<span style="mso-spacerun: yes">&nbsp; </span>This is the only exception to the “always supply an AA Name” rule that I can think of off the top of my head.<span style="mso-spacerun: yes">&nbsp; </span>If you’re writing in managed code (.Net Framework), always supply an AA name.<span style="mso-spacerun: yes">&nbsp; </span>Consider it an ounce of prevention.</font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana"><font size="2">Explanation #2<o:p></o:p></font></font></u></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Consider Visual Studio .Net’s New Project Dialog’s more/less button.<span style="mso-spacerun: yes">&nbsp; </span>Note that the caption changes based on the state of the button.<span style="mso-spacerun: yes">&nbsp; </span>I was asked if users would be confused if we changed the AA name for the control.<span style="mso-spacerun: yes">&nbsp; </span>It seems to me that it would be even more confusing if we didn’t.<span style="mso-spacerun: yes">&nbsp; </span>Imagine interaction with a more/less button that when toggled, still said “more”.<span style="mso-spacerun: yes">&nbsp; </span>This reminds me of that bad junior high school joke where you write on both sides of a sheet of paper, “How do you keep a &lt;insert profession here&gt; occupied?<span style="mso-spacerun: yes">&nbsp; </span>Answer on other side.”&nbsp;</font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><u><font face="Verdana"><font size="2">Explanation #3<o:p></o:p></font></font></u></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">I’ve studied the MSAA SDK guidelines for quite some time now (long enough if AA properties were GUIDs, I’d have them memorized), and I’ve come to the conclusion that the AA Name must match whatever it is on the screen, with the following exceptions:</font></p> <ol> <li> <div class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2">The caption is a picture, hence requiring a textual name<o:p>&nbsp;</o:p></font></font></div> <li> <div class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p></o:p><font face="Verdana" size="2">The caption or label is not unique to the dialog or form, hence requiring additional text.</font></div></li></ol> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana"><font size="2">Any other additional information required to explain what this control does must be provided via the AA description.<span style="mso-spacerun: yes">&nbsp; </span>That’s what the MSAA SDK guidelines say to do.<span style="mso-spacerun: yes">&nbsp; </span></font></font></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><o:p><font face="Verdana" size="2">&nbsp;</font></o:p></p> <p class="MsoNormal" style="MARGIN: 0in 0in 0pt"><font face="Verdana" size="2">Having said all of this, remember we’re supporting “screen reading” technology.<span style="mso-spacerun: yes">&nbsp; </span>I say screen reading in quotes to draw attention to the literal notion of what we are supporting.<span style="mso-spacerun: yes">&nbsp; </span>If the AA Name didn’t match what was on the screen, are we really providing a way for a screen reader to read the screen?</font></p>]]></content:encoded>
    </item>
    <item>
      <title>Usability and Accessibility - are they the same thing?</title>
      <link>https://docs.microsoft.com/archive/blogs/vsaccessibility/usability-and-accessibility-are-they-the-same-thing</link>
      <pubDate>Mon, 20 Sep 2004 18:38:00 GMT</pubDate>
      <dc:creator><![CDATA[vsaccessibility]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vsaccessibility/2004/09/20/usability-and-accessibility-are-they-the-same-thing/</guid>
      <description><![CDATA[The more I study UI Consistency and&nbsp;improving the user experience,&nbsp;and the more feedback I...]]></description>
      <content:encoded><![CDATA[<p><font face="Verdana" size="2">The more I study UI Consistency and&nbsp;improving the user experience,&nbsp;and the more feedback I hear from customers who use accessibility features, I'm really starting to wonder if Usability and Accessibility are really just two sides of the same coin?</font></p> <p><font face="Verdana" size="2">Yes, there is a difference between the two.</font></p> <ul> <li><font face="Verdana" size="2">Usability - how well a user understands the UI </font> <li><font face="Verdana" size="2">Accessibility - the ability to use the UI</font></li></ul> <p><font face="Verdana" size="2">Is it possible to have one without the other?&nbsp; Is it possible to have good usability without good accessibiltiy?&nbsp; Is it possible to have good accessibility without good usability?&nbsp;&nbsp;Let's say that i have perfect MSAA support for a feature that works perfectly with Assistive Technologies.&nbsp; Is it possible to have good usability without having good accesibility?</font></p> <p><font face="Verdana" size="2">I don't know yet.</font></p> <p><font face="Verdana" size="2">I'm leaning towards “no, you can't have one without the other because they are the same thing.”&nbsp; During one of my 28 hours worth of meetings this week, I mentioned that if i went to graduate school for CS, i would probably write my thesis on this topic.</font></p> <p><font face="Verdana" size="2">What do you think?</font></p>]]></content:encoded>
    </item>
  </channel>
</rss>